ASP .Net Gridview仅在单击更新时绑定到数据

时间:2009-11-05 19:32:46

标签: asp.net data-binding gridview

这就是我希望控件如何工作的方式。单击gridview中行的编辑。其中一列中有一个文本框,我希望它是空白的,即使数据库中有该列的数据,但是当我点击更新时,我希望用户输入的任何新文本都可以更新该列的数据库。这将是单向数据绑定,但另一种方式呢?

2 个答案:

答案 0 :(得分:0)

以下是我使用sql数据源和生成的select,update和delete方法的方法。

首先,您需要创建任何要编辑的列,例如带有项目模板的模板字段,然后编辑项目模板:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="ID" DataSourceID="SqlDataSource1" 
        onrowupdating="GridView1_RowUpdating">
    <Columns>
    <asp:TemplateField HeaderText="City" SortExpression="City">
        <ItemTemplate>
           <asp:Label runat="server" Text='<%# Eval("City") %>'></asp:Label>
        </ItemTemplate>
        <EditItemTemplate>
           <asp:TextBox runat="server"  ID="txtCityEdit" Text=""></asp:TextBox>
        </EditItemTemplate>
     </asp:TemplateField>
     </Columns>
</asp:GridView>

接下来处理gridview的更新事件:

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        //find the value control who's value you want
        TextBox tb = (TextBox)GridView1.Rows[e.RowIndex].FindControl("txtCityEdit");

        //since we are not using a bound column for city we need to explicitly insert the value
        //into the update parameter.
        SqlDataSource1.UpdateParameters["City"].DefaultValue = tb.Text;
    }

即使你使用的不是SQL数据源,这应该是基本的解决方案。

答案 1 :(得分:0)

// Find notes textbox
TextBox tb = (TextBox)MyActiveReferrals.Rows[e.RowIndex].FindControl("NotesTextBox");
e.NewValues.Add("Notes", tb.Text);

我使用了linq数据源。