Как заполнить список из сетки сетки ASP.NET? - PullRequest
0 голосов
/ 12 июля 2011

У меня есть сетка, я хочу обновить все строки, которые будут выбраны, проверяя чековую книжку. Сначала я хочу, чтобы все выбранные строки были в списке. Я не знаю, как это сделать. Я знаю, как заполнить сетку из списка. мой вид сетки

<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>

Еще одна моя проблема: как получить только выбранные (флажки) строки из таблицы?

Ответы [ 4 ]

1 голос
/ 12 июля 2011
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);    
    }
}
1 голос
/ 12 июля 2011

Это довольно просто, если вы не просматриваете свою сетку и хотите сохранить проверенное значение в PostBack.На разметке 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 голосов
/ 12 июля 2011
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"]);
0 голосов
/ 12 июля 2011

Я бы сделал столбец флажков TemplateColumn.Затем при обратной передаче вам нужно перебрать коллекцию строк GridView и сделать что-то вроде этого:

foreach(GridViewRow row in gridViewId)
{
    CheckBox chk = row.FindControl("CheckBoxId") as CheckBox;//use chk value as needed
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...