首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GridView能力

GridView能力
EN

Stack Overflow用户
提问于 2011-12-23 03:17:23
回答 2查看 184关注 0票数 1

我想知道GridView是否可以执行以下操作:

  1. 允许用户添加一个新的空行。
  2. 将该行作为网格中的第一行。
  3. 使行被选中并处于编辑模式,以便用户可以添加信息.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-23 03:20:28

这里有一个例子:http://www.dotnetfunda.com/articles/article180.aspx

应该很容易将处理新记录的表单放在顶部,而不是底部。

票数 2
EN

Stack Overflow用户

发布于 2011-12-23 04:28:52

我过去所做的是在数据表的顶部添加一个新的空数据行,ID为-1 (或者如果字符串ID为"new“或”空“)。将编辑索引设置为该行并绑定数据。

(快速而肮脏的例子)

代码语言:javascript
复制
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" DataKeyNames="ID" 
            onrowupdating="GridView1_RowUpdating">
            <Columns>
                <asp:TemplateField HeaderText="Column 1">
                    <ItemTemplate>
                        <asp:Literal ID="litColumn1" Text='<%#Bind("column1") %>' runat="server"></asp:Literal>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txtColumn1" Text='<%#Bind("column1") %>' runat="server"></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Column 2">
                    <ItemTemplate>
                        <asp:Literal ID="litColumn2" Text='<%#Bind("column2") %>' runat="server"></asp:Literal>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txtColumn2" Text='<%#Bind("column2") %>' runat="server"></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Column 3">
                    <ItemTemplate>
                        <asp:Literal ID="litColumn3" Text='<%#Bind("column3") %>' runat="server"></asp:Literal>
                    </ItemTemplate>
                    <EditItemTemplate>
                        <asp:TextBox ID="txtColumn3" Text='<%#Bind("column3") %>' runat="server"></asp:TextBox>
                    </EditItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <EditItemTemplate>
                        <asp:LinkButton ID="saveLink" runat="server" CommandName="update">Save</asp:LinkButton>
                    </EditItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>

对于背后的代码:

代码语言:javascript
复制
protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
            Fill_Grid();
    }

    private void Fill_Grid()
    {
        //Create new test data source and columns
        DataTable dt = new DataTable();
        dt.Columns.Add("ID");
        dt.Columns.Add("column1");
        dt.Columns.Add("column2");
        dt.Columns.Add("column3");

        //Sample data
        DataRow dr = dt.NewRow();
        dr["ID"] = 1;
        dr["column1"] = "test1.1";
        dr["column2"] = "test1.2";
        dr["column3"] = "test1.3";
        dt.Rows.Add(dr);

        dr = dt.NewRow();
        dr["ID"] = 2;
        dr["column1"] = "test2.1";
        dr["column2"] = "test2.2";
        dr["column3"] = "test2.3";
        dt.Rows.Add(dr);

        //Empty row at the top
        dr = dt.NewRow();
        dr["ID"] = -1;  //-1 is for new rows only
        dt.Rows.InsertAt(dr, 0);    //inserting at 0th position of table

        //Bind data
        GridView1.DataSource = dt;
        GridView1.EditIndex = 0;
        GridView1.DataBind();
    }

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        //Check ID
        if (e.Keys[0].ToString() == "-1")
        {
            //is a new row, insert data
        }
        else
        {
            //is an update, save data
        }

        //Rebind data
        Fill_Grid();
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8611927

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档