【发布时间】:2018-03-22 23:12:09
【问题描述】:
如果datagrid 在dataset 中包含匹配的value,我想动态选择datagrid 中的checkbox。当用户选择dropdownlist 的值时,我正在绑定datagrid。
为此,我编写了以下代码。
protected void dgAvailableCandidates_ItemDataBound(object sender, DataGridItemEventArgs e)
{
DataSet dsSelectedCandidates = (DataSet)Session["SelectedCandidatesDataSet"];
if (dsSelectedCandidates.Tables[1].Rows.Count > 0)
{
for (int i = 0; i < dgAvailableCandidates.Items.Count; i++)
{
string indRow = dgAvailableCandidates.DataKeys[i].ToString();
if (indRow == dsSelectedCandidates.Tables[1].Rows[i]["fk_recId"].ToString())
{
CheckBox shouldCheck = (CheckBox)dgAvailableCandidates.Items[i].FindControl("chkbox_SelectCandidate");
shouldCheck.Checked = true;
}
}
}
}
我创建了一个存储过程,它返回两个datatables,tables0 是bind,datagrid 和table1 持有recordIds,它们已经在database table 中作为selected or bit value (1) 可用。
我的问题在这里,当datagrid 在table1 中找不到value 时,它会抛出exception“没有匹配的行”。我应该如何解决这个exception
谢谢!
【问题讨论】:
-
在直接使用它的值之前,您应该检查table1中是否存在行,这将解决您的问题。
-
@Dinesh Prajapati 一些代码可以帮助我更好地理解您的提示。谢谢!
-
在哪一行代码(从上面的代码)抛出异常?
-
这个
if (indRow == dsSelectedCandidates.Tables[1].Rows[i]["fk_recId"].ToString())我使用了一个数组列表,但是它抛出了一个索引超出范围的错误。 ...
标签: c# asp.net checkbox webforms