簡體   English   中英

在gridview中,updatepanel無法正常工作

[英]In gridview, updatepanel is not working

HTML代碼

<asp:GridView ID="gridprodlist" runat="server" AutoGenerateColumns="False" EmptyDataText="No record" Width="100%">
<Columns>
<asp:TemplateField HeaderText="Edit&lt;br/&gt;Delete&lt;br/&gt;Disable">
<ItemTemplate>
<table cellpadding="0" cellspacing="0" border="0">
     <tr>
        <td valign="top">
         <asp:UpdatePanel ID="UpdatePanel100" runat="server">
            <ContentTemplate>
        <asp:CheckBox ID="chkdis" runat="server" AutoPostBack="True" OnCheckedChanged="chkdis_CheckedChanged" ValidationGroup='<%# Eval("pid") %>' Text="Disable" />
            </ContentTemplate>
          </asp:UpdatePanel>
         </td>
    </tr>
</table>
</ItemTemplate>
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />

.cs代碼

protected void chkdis_CheckedChanged(object sender, EventArgs e)
{
    CheckBox chkdis = (CheckBox)sender;
    int id = Convert.ToInt32(((CheckBox)sender).ValidationGroup);

    if (chkdis.Checked == true)
    {

    }
    else
    {

    }

}

我已經將updatepanel放在gridview中但仍然點擊我的復選框我的頁面得到刷新。 我該怎么辦? 我不希望我的頁面得到刷新

嘗試將UpdatePanel移出GridView,並將整個GridView包裝在UpdatePanel中,看看是否有所不同。

嘗試將此CheckBox注冊為代碼隱藏的async-postback控件:

protected void Page_Init(Object sender, EventArgs e)
{
     gridprodlist.DataBound += GridprodList_DataBound;
}  

private void GridprodList_DataBound(Object sender, EventArgs e)
{
    ScriptManager sm = ScriptManager.GetCurrent(Page);
    foreach(GridViewRow row in gridprodlist.Rows)
    {
        CheckBox chkdis = (CheckBox) row.FindControl("chkdis");
        sm.RegisterAsyncPostBackControl(chkdis);
    }
}

它只是第一次工作,但第二次我的頁面再次刷新

然后嘗試使用RowCreated ,它在每一行的每個回發中觸發:

ScriptManager sm = ScriptManager.GetCurrent(Page);

private void GridprodList_RowCreated(Object sender, GridViewRowEventArgs e)
{
    if(e.Row.RowType == DataControlRowType.DataRow)
    {
        CheckBox chkdis = (CheckBox) e.Row.FindControl("chkdis");
        sm.RegisterAsyncPostBackControl(chkdis);
    }
}

它不像這樣工作,因為GridView在渲染時轉換為表 在渲染時,更新面板肯定不會添加到每一行。 因此,最好的方法是將gridview放在updatepanel中。

將UpdatePanel移動到GridView之外,並將GridView包裝在UpdatePanel中。 如果您仍然需要在某些控件上進行回發,那么請在UpdatePanel的結束標記之前使用。

<Triggers> 
<PostBackTriggers ControlId="YourControlId"/>
<Triggers>
</asp:UpdatePanel>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM