我如何添加编辑框,并阅读他们的价值观中提出,用asp:Repeater
?
我有一个asp:GridView
其显示只读(即不可编辑)组数据,例如:
我怎样才能使的细胞GridView
可编辑,如(Photoshop的样机):
注:我没有在Photoshop中编辑框中实体模型到每一个行和列(因为它时间太长)。 你仍然可以得到的想法。
- 我怎样才能说服一个
asp:GridView
来显示每个单元一个编辑框? - 如果我做说服
asp:GridView
显示一个编辑框,我如何“读”出来OnClick
保存按钮的?
奖金颤振
我不会反对使用asp:Repeater
,手动放置<INPUT>
对照。 然后我的困惑是如何在过程中读取每个输入OnClick
保存按钮。 虽然我将非常乐意使用一个中继器,和一个GridView可能无法完成我想要做的中继器的唯一可能性,这个问题是关于一个GridView。
- 如果在GridView 可以做到这一点:伟大的; 怎么样?
- 如果在GridView 不能做到这一点:这是一个答案了。
你必须通过设立试图EditIndex
的财产DataGrid
?
例:
<asp:GridView runat="server" onrowediting="grdProducts_RowEditing"
ID="grdProducts">
<Columns>
<asp:CommandField ShowEditButton="True" />
</Columns>
</asp:GridView>
后面的代码
protected void grdProducts_RowEditing(object sender, GridViewEditEventArgs e)
{
this.grdProducts.EditIndex = e.NewEditIndex;
This.BindGrid();
}
请注意,您必须重新绑定网格
通常您节省每行,这意味着,你必须编辑链接各行中,你进入编辑模式后,保存按钮和可选的取消按钮出现,让您保存在特定行的值的数据
使用时,按照这一办法是微不足道GridView
:
protected void grdProducts_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
// old values for the current row
var oldValues = e.OldValues;
// new (updated) values for the current row
var newvalues = e.NewValues;
// Exit edit mode
this.grdProducts.EditIndex = -1;
// Update the grid
this.BindGrid();
}
在网格标记只需添加以下内容:
onrowupdating="grdProducts_RowUpdating"
如果你需要指定定制控件编辑或显示在只读模式,使用网格模板单元格数据时,当:
<Columns>
<asp:TemplateField HeaderText="Name">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Name") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
</Columns>
为此,您可以使用一个GridView,但如果你有很多列,你会产生相当多的代码。
首先要在GridView模板列中的所有列。 在我的例子,我将只使用一列。 像这样:
<asp:GridView ID="test" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="Foo" SortExpression="foo">
<ItemTemplate>
<asp:TextBox ID="FooText" runat="server" Text='<%# Eval("Foo") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<!-- other cols here -->
</Columns>
</asp:GridView>
<asp:Button ID="Save" runat="server" Text="Save" OnClick="Save_Click" />
然后在后面的保存按钮,你可以遍历在GridView行的代码:
foreach (GridViewRow gvRow in test.Rows)
{
string val = ((TextBox)gvRow.FindControl("FooText")).Text;
<!-- other cols here -->
//do something with all the values you have parsed from the row
}