c# asp net updatepanel вызывает обновление страницы - PullRequest
1 голос
/ 14 января 2020

У меня есть простая сетка с кнопкой изображения, чтобы обновить значение одного из столбцов сетки, проблема заключается в том, что всякий раз, когда я нажимаю кнопку изображения, она обновляет sh страницу wholw, и я хочу, чтобы сетка была обновлена ​​только с обновленным значением, Я пытался использовать UpdatePanel, но он также обновляет sh всю страницу, любая помощь будет оценена.

код aspx:

<form id="form1"  runat="server" >
 <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>

        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                <asp:GridView ID="GridView1"  CssClass="datatable"  runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True" PageSize="5">
                    <Columns >
                        <asp:BoundField DataField="req_id" HeaderText="request ID" SortExpression="req_id" />
                        <asp:BoundField DataField="req subject" HeaderText="request subject" SortExpression="req_subject" /> 
                        <asp:TemplateField>
                        <ItemTemplate>
                                <asp:ImageButton ID="Button_update" runat="server" CommandArgument='<%# Bind("req_id") %>' CssClass="yourCssClassIsNeedIt" ImageUrl="Images/under.png" OnClick="btn_under" UseSubmitBehavior="false" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
            </ContentTemplate>
        </asp:UpdatePanel>
 </form>

код aspx.cs:

protected void Button_update(object sender, ImageClickEventArgs e)
{

    using (SqlConnection sqlCon = new SqlConnection(@"Data Source= DESKTOP-U9437PU; initial Catalog = Mydb; Integrated Security =True;"))
    {
        sqlCon.Open();

       string sql = "update requests_table set stat_id = '2' where req_id ='" 5 "'";
       SqlCommand cmd1 = new SqlCommand(sql, sqlCon);
       cmd1.ExecuteNonQuery();
       cmd1.Dispose();
       sqlCon.Close();
    }
    GridView1.DataBind(); 

}

Ответы [ 2 ]

1 голос
/ 14 января 2020

Вам необходимо установить UpdateMode Conditional :

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
     <Triggers>        
        <asp:AsyncPostBackTrigger ControlID="Button_update" EventName="Click" />    
    </Triggers>
    <ContentTemplate>
        <asp:GridView ID="GridView1"  CssClass="datatable"  runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" AllowPaging="True" AllowSorting="True" PageSize="5">
            <Columns >
                <asp:BoundField DataField="req_id" HeaderText="request ID" SortExpression="req_id" />
                <asp:BoundField DataField="req subject" HeaderText="request subject" SortExpression="req_subject" /> 
                <asp:TemplateField>
                <ItemTemplate>
                        <asp:ImageButton ID="Button_update" runat="server" CommandArgument='<%# Bind("req_id") %>' CssClass="yourCssClassIsNeedIt" ImageUrl="Images/under.png" OnClick="btn_under" UseSubmitBehavior="false" />
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>

Тогда вам нужно будет работать UpdatePanel1.Update(); следующим образом:

protected void Button_update(object sender, ImageClickEventArgs e)
{

    using (SqlConnection sqlCon = new SqlConnection(@"Data Source= DESKTOP-U9437PU; initial Catalog = Mydb; Integrated Security =True;"))
    {
        sqlCon.Open();

       string sql = "update requests_table set stat_id = '2' where req_id ='" 5 "'";
       SqlCommand cmd1 = new SqlCommand(sql, sqlCon);
       cmd1.ExecuteNonQuery();
       cmd1.Dispose();
       sqlCon.Close();
    }
    GridView1.DataBind(); 
    UpdatePanel1.Update();

}
0 голосов
/ 14 января 2020

Попробуйте это:

<asp:ImageButton ID="Button_update" runat="server" CommandArgument='<%# Bind("req_id") %>' CssClass="yourCssClassIsNeedIt" ImageUrl="Images/under.png" OnClick="btn_under" UseSubmitBehavior="false" OnClientClick="javascript:void(0);"  />

И это

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
...