У меня есть 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();
   }

Так где я ошибаюсь?

0
Navy 23 Дек 2015 в 09:16

2 ответа

Лучший ответ

Вместо того //if (!IsPostBack && !Is) //{ BindResultGridView(); //} просто используйте if (!IsPostBack) { BindResultGridView(); }, и все готово.

Пояснение: - Если вы снова привяжете gridview при загрузке страницы, когда ваша страница находится в стадии обратной передачи, она потеряет изменения, которые вы сделали в прошлый раз. он переинициализирует всю сетку, и, следовательно, ваш код не будет работать.

1
Just code 29 Дек 2015 в 13:30

Вам, вероятно, следует использовать событие prerender или событие rowdatabound для gridview, чтобы получить значение флажка на панели обновления

0
Ravindra Bathe 23 Дек 2015 в 06:25