2017-03-01 135 views
0

我有asp.net的脚本,它创造了checkBox的值,并且可能用户点击和取消点击相同的复选框,然后我会编程检查2次如果是检查,则将其删除一个选定的行。我遇到的问题是,当我检查复选框并取消选中相同的复选框时,我不想删除它,但它会删除,请问我需要使用我的代码?C#检查是否复选框检查(可能用户检查和取消选中相同的复选框)

protected void btnDelete_Click(object sender, EventArgs e) 
{ 
    string[] Checked = hfLegalRecords.Value.Split('|'); 

    for (int i = 0; i < Checked.Length - 1; ++i) 
    { 
     string[] value = Checked[i].Split(','); 
     string checkbox = value[0]; 
     string ClientCode = value[1]; 
     string DebtorNumber = value[2]; 
     if (checkbox.Equals("true")) 
      for (int j = 0; j < checkbox[i]; ++j) 
      { 
       LegalEvents.RemoveSelectCheckBox(ClientCode, DebtorNumber); 
      } 
    } 

    LoadLegalRecords(); 
} 

回答

0

我假设你正在使用网格/表格。 您是否正在使用javascript来追踪您的CHECK?或每个CHECK是回传?

使用Onclick JavaScript函数将您的复选框和用户检查它。使用“ClientCode,DebtorNumber,检查”更新hfLegalRecords字符串,如果他在用户单击DELETE按钮时取消勾选相同的添加“ClientCode,DebtorNumber,取消选中”

阅读hfLegalRecords.Value.Split('|');并将它们存储在单独的DataTables/Arrays中(如果选中将移至表1;如果未选中,移至Table2)

假设您没有重复的ClientCode,编写一个小代码来检查每个ClientCode中两个表中的记录数。如果你有CientCode1检查。你有1个条目表1.如果你有ClientCode2选中和取消选中,你在这两个表中都有1个条目。如果ClientCode3是Checked,Unchecked和Checked,你将在Table1中有2个条目,在Table2中有1个条目。无论哪种方式,你的逻辑应该是“如果Table1中的条目> Table2中的条目删除该ClientCode”否则不要删除。

使用这种简单的编码结构,当屏幕上显示更多数字记录时,这将变得复杂。我个人建议使用Asp.Net网格控件。因此,您可以获取所有记录,并在用户单击DELETE按钮时验证选中/取消选中。这将节省大量的时间和你在编码方面的努力。

0

不知道你在做什么,但checkbox[i]是一个字符串。

for (int j = 0; j < checkbox[i]; ++j) 
{ 
    LegalEvents.RemoveSelectCheckBox(ClientCode, DebtorNumber); 
} 

在这里,我们只是呼吁 LegalEvents.RemoveSelectCheckBox(ClientCode, DebtorNumber)的字符串中的每个字符。

其实这个代码甚至不会编译,因为j < "true"是无稽之谈。

+0

我试图如果用户选中复选框,然后选中复选框的同一指标,不要删除它,但如果用户选中该复选框,第一次是删除行,如果取消选中同一checbox这不把它删除,但它是删除它。 –

+1

代码中没有'CheckBox'对象。 – BanksySan