【问题标题】:Not able to fetch Check Box value of GridView which is in Update Panel无法获取更新面板中的 GridView 的复选框值
【发布时间】:2015-12-23 06:16:25
【问题描述】:

我有一个如下所述的 GridView

 <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:GridView ID="gvResult" runat="server" AutoGenerateColumns="false">
                <Columns>
                    <asp:TemplateField>
                        <HeaderTemplate>
                            <asp:CheckBox ID="chkAll" runat="server" onclick="checkAll(this);" />
                            Remove Lists
                        </HeaderTemplate>
                        <ItemTemplate>
                            <asp:CheckBox ID="chk" runat="server" onclick="Check_Click(this)" />
                        </ItemTemplate>
                        <ItemStyle HorizontalAlign="Center" />
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </ContentTemplate>
    </asp:UpdatePanel>

当我试图在按钮单击时获取复选框的值时,即使选中了复选框,它也总是返回 false

下面是我的按钮点击事件

 protected void btnDeleteLists_Click(object sender, EventArgs e)
   {
       string str = string.Empty;

       foreach (GridViewRow gvrow in gvResult.Rows)
       {
           CheckBox chk = (CheckBox)gvrow.FindControl("chk");
           if (chk != null & chk.Checked)
           {
               //Some Code                 
           }
       }       
   }

页面加载事件

 protected void Page_Load(object sender, EventArgs e)
   {
       cmdSearch.Text = "Search " + rbSearch.SelectedValue;
       if (SessionUtilities.Current_UserType != "3")
       {
           gvResult.Columns[gvResult.Columns.Count - 3].Visible = false;
       }
       try
       {
           if (Request.QueryString["ListType"].ToString().Trim() == "SL") ListType = 2;
           if (Request.QueryString["ListType"].ToString().Trim() == "DSL") ListType = 3;
       }
       catch { }

       if (ListType == 2) ListTypeString = "Suppression";
       if (ListType == 3) ListTypeString = "Default Suppression";
       SessionUtilities.SetTabHeadingDesc("List", ListTypeString + " List Summary", "View summary of your created lists");
       this.Title = "(View List) " + System.Configuration.ConfigurationManager.AppSettings["Page_Title"].ToString();
       //if (!IsPostBack && !Is)
       //{
       BindResultGridView();

       //}

       newDt = GetAllLists();
   }

那么我哪里出错了?

【问题讨论】:

  • 添加页面加载代码并更新面板(如果有)
  • 而不是//if (!IsPostBack &amp;&amp; !Is) //{ BindResultGridView(); //} 只需使用if (!IsPostBack) { BindResultGridView(); } 就完成了。如果您的状态为postback,请不要在页面加载中再次绑定gridview。
  • 你是对的 thanxxx...我什至没有注意到 Thanx 现在正在工作
  • 欢迎,我将其作为答案发布

标签: asp.net gridview webforms


【解决方案1】:

而不是 //if (!IsPostBack &amp;&amp; !Is) //{ BindResultGridView(); //} 只需使用if (!IsPostBack) { BindResultGridView(); } 即可完成。

说明:- 如果您在页面处于回发阶段时在页面加载中再次绑定 gridview,它将丢失您上次所做的更改。它将重新初始化整个 gridview,因此您的代码将无法工作。

【讨论】:

    【解决方案2】:

    您可能应该使用 gridview 的 prerender 事件或 rowdatabound 事件来获取更新面板中的复选框值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-16
      • 2015-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 2017-11-03
      相关资源
      最近更新 更多