通过网格循环查找特定列(不在任何网格事件中)
问题描述:
我在这里修复了一些家伙。处理现有的代码并需要在边界内进行更改。通过网格循环查找特定列(不在任何网格事件中)
需要循环通过(新创建的)Gridview来查找特定列的值。并使用现有计数器(x)和“现有的foreach”遍历行。
int x = 0;
foreach (KeyValuePair<int, object> kvpValues in tjSelectFields.SectionList)
{
//This is the Code I've tried out.
//This is where any new changes are to be added
foreach (System.Web.UI.WebControls.GridViewRow row in grdReleaseUserPending.Rows)
{
//selectID = grdReleaseUserPending.Rows[x].Cells[1].Text;
selectID = row.Cells[0].Text;
}
//End of New Changes
branchID = ((TJSearchRecord)kvpValues.Value).FieldValues["BranchID"];
acctNbr = ((TJSearchRecord)kvpValues.Value).FieldValues["AcctNbr"];
txnSeqNbr = ((TJSearchRecord)kvpValues.Value).FieldValues["TxnSeqNbr"];
txnsList = "'" + selectID + "|" + branchID + "|" + acctNbr + "|" + txnSeqNbr + "'";
scriptTxnList.Append("oReleaseUserAuthPending.txnsList[" + x + "] = " + txnsList + ";\n");
x++;
}
基本上我需要做的是,我需要利用现有的增量器(x)的递增行,并获得第一列的数据,每一行。
目前该过程没有在新创建的foreach循环
我可能会混淆你们对此解释有点流动,如果需要任何进一步的信息,请让我知道。
需要帮助来找到一种方法来做到这一点。 PFA参考网格的屏幕截图。
答
有在该列中没有数据,只一个复选框。将数据绑定到GridView时,所有数据类型都会成为一个字符串(或布尔列和自动生成列时的复选框)。这就是为什么你应该循环源数据而不是GridView的内容。很多人在尝试从cell.Text中获取这些数据类型时都会犯十进制,货币和日期错误。
但是,您可以将DataKeyNames
添加到GridView并阅读它们。
<asp:GridView ID="grdReleaseUserPending" runat="server" DataKeyNames="selectID">
,然后阅读后面
int cnt = 0;
foreach (GridViewRow row in grdReleaseUserPending.Rows)
{
selectID = Convert.ToInt32(grdReleaseUserPending.DataKeys[cnt].Values[0]);
cnt++;
}
感谢您的答复@VDWWD在代码中的关键,但问题仍然存在。该过程仍然不会在foreach循环中流动。 :( – theLearner
然后''grdReleaseUserPending'或者'tjSelectFields'中的KeyValuePairs没有行设置断点和检查 – VDWWD
Grid @VDWWD有两行(如快照中所示)。 KeyValuePairs ...双重检查它 – theLearner