2011-07-12 69 views
0

我有一個網格視圖,我想通過檢查支票簿來更新將被選中的所有行。首先,我要將所有選定的行放入列表中。我不知道該怎麼做。我知道如何從列表中填充網格。 我的網格視圖是如何從asp.net網格視圖填充列表?

<asp:GridView runat="server" ID="GridForResult" 
     Visible="true" 
     ShowHeader="false" 
     AutoGenerateColumns="false"> 
    <Columns> 
     <asp:TemplateField ItemStyle-Width="120px" ItemStyle-Height="22px"> 
      <ItemTemplate> 
       <%#Eval("TestRoll")%> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField ItemStyle-Width="150px" ItemStyle-Height="22px"> 
      <ItemTemplate> 
       <%#Eval("Name")%> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField ItemStyle-Width="80px" ItemStyle-Height="22px"> 
      <ItemTemplate> 
       <%#Eval("Program")%> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField ItemStyle-Width="80px" ItemStyle-Height="22px"> 
      <ItemTemplate> 
       <asp:CheckBox ID="chkSelected" runat="server" Text="Selected" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

我的另一個問題是如何從GridView中只得到選擇(複選框)行?

回答

1

它非常直截了當,如果你不分頁您的網格,你想保持在回發檢查值。 在GridView的標記,設置DataKeyNames="{your primary key}"

代碼 - 背後

List<string> primaryKeys = new List<string>(); 
foreach(GridViewRow row in GridForResult.Rows) 
{ 
    CheckBox check = row.FindControl("chkSelected") as CheckBox; 
    if(check.Checked) 
    { 
     primaryKeys.Add(GridForResult.DataKeys[row.RowIndex].Value.ToString()); 
    } 
} 

List<string>primaryKeys現在將容納所有檢查主鍵。

+0

這裏,TestRoll是我的主鍵。但是,當我寫像primaryKeys.Add(GridForResult.DataKeys [「TestRoll」]。Value.ToString());它給我一個錯誤:參數類型'字符串'不能分配給參數類型int,你能解決這個問題嗎? – Pankouri

+0

@Pankouri:更新的代碼。有一個錯字 – naveen

+0

這個問題可以通過放置一個整數作爲Datakeys的索引來解決,即primaryKeys.Add(GridForResult.DataKeys [index] .Value.ToString());其中index是一個int型變量。 – Pankouri

0

我會使複選框列爲TemplateColumn。然後在回發,你需要遍歷GridView的行收集和做這樣的事情:

foreach(GridViewRow row in gridViewId) 
{ 
    CheckBox chk = row.FindControl("CheckBoxId") as CheckBox;//use chk value as needed 
} 
+0

我ddint明白你的意思,你威爾解釋多一點? – Pankouri

0
declare a collection of say string type, 
List<string> objList = new List<string>(); 

foreach(GridViewRow row in gridViewId) 
{ 
    CheckBox chk = row.FindControl("CheckBoxId") as CheckBox; 
    if(chk.IsChecked) 
    { 
    objList.Add(row["id"].Text); 
    } 
} 
save this list in session, 
Session["checkedList"] = objList; 

when you want to retireve,use, 
objList = List<string>(Session["checkedList"]); 
1
List<string> objList = new List<string>();   

foreach (GridViewRow gvrow in GridView1.Rows) 
{ 
    CheckBox CheckBox1 = (CheckBox)gvrow.FindControl("CheckBox1"); 
    if (CheckBox1.Checked) 
    { 
     objList.Add(row["id"].Text);  
    } 
}