Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.net所有行可编辑GridView和列表<;类型>;作为数据源_C#_Asp.net_List_Gridview - Fatal编程技术网

C# ASP.net所有行可编辑GridView和列表<;类型>;作为数据源

C# ASP.net所有行可编辑GridView和列表<;类型>;作为数据源,c#,asp.net,list,gridview,C#,Asp.net,List,Gridview,有人可以发布一个gridview的工作示例,其中所有行都是可编辑的(就像excel一样),并且list作为数据源吗 我们希望在回发之间保存用户在网格中输入的数据(可能由任何控件生成,而不仅仅是提交控件),然后从列表或网格视图中获取数据,因此我们使用它插入或更新不同的表(这不是1:1关系/grid:sqltable的典型情况) 此外,我们还有一个数字为1到9的下拉列表(带有autopostback),用于控制gridview中使用的行数,因此,如果用户从1行更改为5行,将向gridview添加4行

有人可以发布一个gridview的工作示例,其中所有行都是可编辑的(就像excel一样),并且
list
作为数据源吗

我们希望在回发之间保存用户在网格中输入的数据(可能由任何控件生成,而不仅仅是提交控件),然后从列表或网格视图中获取数据,因此我们使用它插入或更新不同的表(这不是1:1关系/grid:sqltable的典型情况)

此外,我们还有一个数字为1到9的下拉列表(带有autopostback),用于控制gridview中使用的行数,因此,如果用户从1行更改为5行,将向gridview添加4行新行,如果用户从8行更改为5行,最后3行将被删除…(保留用户当前输入的数据)

事先谢谢

这样解决: ASPX:


1.
2.
3.
4.
5.
6.
7.
8.
9
A.
B
C
政务司司长:

公共类Itemx
{
公共字符串cod{get;set;}
公共字符串Tipo{get;set;}
}
公共静态列表文本
{
得到
{
返回(列表)会话[“LItems”];
}
设置
{
会话[“LItems”]=值;
}
}
void InitializeItems()
{
LItems=新列表();
ConfigItems();
}
void ConfigItems()
{
int numitems=Convert.ToInt32(ddlNItems.SelectedValue);
如果(LItems.Count>numitems)
{
对于(int i=GridView1.Rows.Count;i>numitems;i--)
{
删除的文字(i-1);
}
}
else if(LItems.Count
 <asp:DropDownList ID="ddlNItems" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlNItems_SelectedIndexChanged">
     <asp:ListItem Selected="True">1</asp:ListItem>
     <asp:ListItem>2</asp:ListItem>
     <asp:ListItem>3</asp:ListItem>
     <asp:ListItem>4</asp:ListItem>
     <asp:ListItem>5</asp:ListItem>
     <asp:ListItem>6</asp:ListItem>
     <asp:ListItem>7</asp:ListItem>
     <asp:ListItem>8</asp:ListItem>
     <asp:ListItem>9</asp:ListItem>
 </asp:DropDownList>

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" ShowHeaderWhenEmpty="True">
     <Columns>
         <asp:TemplateField HeaderText="Código">
             <ItemTemplate>
                 <asp:TextBox ID="txtCodMuestra" runat="server" Text='<%# Eval("cod") %>' /></ItemTemplate>
             </asp:TemplateField>
          <asp:TemplateField HeaderText="Tipo">
              <ItemTemplate>
                  <asp:DropDownList runat="server" ID="ddlTipo" SelectedValue='<%# Eval("Tipo") %>'>
                      <asp:ListItem Value="a">A</asp:ListItem>
                      <asp:ListItem Value="b">B</asp:ListItem>
                      <asp:ListItem Value="c">C</asp:ListItem>
                  </asp:DropDownList>
              </ItemTemplate>
          </asp:TemplateField>
      </Columns>
  </asp:GridView>
public class Itemx
{
    public string cod { get; set; }
    public string Tipo { get; set; }
}
public static List<Itemx> LItems
{
    get
    {
        return (List<Itemx>)Session["LItems"];
    }
    set
    {
        Session["LItems"]= value;
    }
}
void InitializeItems()
{
    LItems = new List<Itemx>();
    ConfigItems();
}
void ConfigItems()
{
    int numitems = Convert.ToInt32(ddlNItems.SelectedValue);


    if (LItems.Count > numitems )
    {
        for (int i = GridView1.Rows.Count; i > numitems; i--)
        {
            LItems.RemoveAt(i - 1);
        }
    }
    else if (LItems.Count < numitems )
    {
        for (int i = GridView1.Rows.Count; i < numitems; i++)
        {
            LItems.Add(new Itemx { Tipo = "a" });
        }
    }
    transferGridtoList();

    GridView1.DataSource = LItems;
    GridView1.DataBind();

    GridView1.HeaderRow.TableSection = TableRowSection.TableHeader;
}
private void transferGridtoList()
{
    for (int i = 0; i < LItems.Count && i < GridView1.Rows.Count; i++)
    {
        LItems[i].cod = ((TextBox)GridView1.Rows[i].Cells[0].Controls[1]).Text;
        LItems[i].Tipo = ((DropDownList)GridView1.Rows[i].Cells[1].Controls[1]).SelectedValue;
    }
}

protected void ddlNItems_SelectedIndexChanged(object sender, EventArgs e)
{
    ConfigItems();
}