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