审核后,复选框状态会清除

时间:2017-05-22 19:25:33

标签: c# asp.net gridview checkbox

首先显示与界面的交互... enter image description here

这是我正在构建的界面,它可以编辑数据库中的一列多行。此功能完美无缺,但在进行第一次编辑后,您无法返回并进行其他编辑。

当您选择“编辑所选项”按钮以第二次弹出面板时。该面板不会弹出。

它不会弹出的原因是因为下面的代码不再是真正的'即使GridView上的复选框仍然被选中。

if (((CheckBox)grv.FindControl("TagRowChkBx")).Checked == true)

我还没有弄清楚为什么第二次通过后检查值不再是真的。

当用户选择'保存'它在编辑面板上触发了一个执行表更新的SP。

这里是GridView定义的相关部分:

<asp:GridView ID="ActVulListGV" runat="server" OnSelectedIndexChanged="ActVulListGV_SelectedIndexChanged" PageSize="25" AlternatingRowStyle-BackColor="#ccffff" PagerSettings-PageButtonCount="25" Width="100%" AutoGenerateColumns="False" DataKeyNames="RecID" AllowPaging="True" AllowSorting="True" HeaderStyle-VerticalAlign="Bottom" HeaderStyle-BackColor="#99CCFF" HeaderStyle-ForeColor="Black" DataSourceID="Vul_DS">
<Columns>
    <asp:CommandField ShowEditButton="True" ShowSelectButton="True" SelectText="Details" EditText="Edit Row"></asp:CommandField>
    <asp:TemplateField HeaderText="Tag" ItemStyle-HorizontalAlign="Center">
        <ItemTemplate>
            <asp:CheckBox runat="server" ID="TagRowChkBx" />
        </ItemTemplate>
        </asp:TemplateField>
        <%-- 13 addtional BoundFields -->
</Columns>
</asp:GridView>

接下来是检查要检查(或不检查)框的代码段,这样就阻止了第一次出现后面板变得可见。

protected void EditSelctedBtn_Click(object sender, EventArgs e)
{
  //Read the column select drop down List into Local Varriables 
  String SelectedColumnItem = ColumnSelectDDL.SelectedItem.ToString();
  String SelectedColumnValue = ColumnSelectDDL.SelectedValue.ToString();

  List<int> EditRows = new List<int>();
  List<string> recordnumber = new List<string>();
  int rcounter = 0;
  foreach (GridViewRow grv in ActVulListGV.Rows)
    {
  // Here is where 'true' becomes not true on second pass
      if (((CheckBox)grv.FindControl("TagRowChkBx")).Checked == true)  
    {
   rcounter++;

   //get current row rowindex if  checkbox  in it is checked 
   EditRows.Add(grv.RowIndex);
   //get the record number (RecID)
   recordnumber.Add(grv.Cells[2].Text.ToString());
 }

希望有人可能能够建议可能导致此问题的原因,因此我可以每页显示多次使用该功能。 谢谢,肯...

更新05/23/2017 2:20 PM美国中部:

这继续让我感到困惑。

我考虑到可能是在gridview的数据绑定期间发生的回发,以显示SP对表所做的更改。我构建了一个例程来捕获状态并在绑定完成后重新建立它。效果很好...但我仍然有同样的问题,复选框的价值没有阅读,因为他们在第二次围绕“编辑选定”&#39;按钮。

因为我只是在检查&#39; true&#39;在读取复选框的值时,我想也许我应该尝试确定实际值是什么,所以我添加了一个else,如果它是真的,否则捕获任何不是真或假(见下面的代码)。

对我也没有任何帮助!所以我给了一个断点并观察了第二次传球的情况......

我发现,只要下面第一行执行流程完全绕过了此代码的其余部分。所以不仅不是真的,它不是假的,而且它不是虚假的东西。我想我已经在C#代码中发现了暗物质!

if (((CheckBox)grv.FindControl("TagRowChkBx")).Checked == true)
{
    //get current row rowindex if  checkbox  in it is checked 
    EditRows.Add(grv.RowIndex);
    //get the record number (RecID)
    recordnumber.Add(grv.Cells[2].Text.ToString());
    }
}
else if (((CheckBox)grv.FindControl("TagRowChkBx")).Checked == false)
{
    UserMessageLbl.Text = "CheckBox value = false!!!";
    PopUpPnl.Visible = true;
    }
else
    {
    UserMessageLbl.Text = "CheckBox value neither true or false = "+ (((CheckBox)grv.FindControl("TagRowChkBx")).ToString());
    PopUpPnl.Visible = true;
    }

0 个答案:

没有答案