2017-06-23 51 views
0

我在這裏修復了一些傢伙。處理現有的代碼並需要在邊界內進行更改。通過網格循環查找特定列(不在任何網格事件中)

需要循環通過(新創建的)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參考網格的屏幕截圖。

Screenshot of the Grid

回答

0

有在該列中沒有數據,只一個複選框。將數據綁定到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++; 
} 
+0

感謝您的答覆@VDWWD在代碼中的關鍵,但問題仍然存在。該過程仍然不會在foreach循環中流動。 :( – theLearner

+0

然後''grdReleaseUserPending'或者'tjSelectFields'中的KeyValuePairs沒有行設置斷點和檢查 – VDWWD

+0

Grid @VDWWD有兩行(如快照中所示)。 KeyValuePairs ...雙重檢查它 – theLearner