C# 关于删除数据网格的问题
我已将数据网格绑定到数组。此外,还有一个用于删除行的按钮。问题是我不确定如何实现它,因为数据源是一个数组 见下文C# 关于删除数据网格的问题,c#,asp.net,c#-4.0,C#,Asp.net,C# 4.0,我已将数据网格绑定到数组。此外,还有一个用于删除行的按钮。问题是我不确定如何实现它,因为数据源是一个数组 见下文 <Columns> <asp:TemplateColumn> <ItemTemplate> <asp:Label ID="lblItems" runat="server" Text='<%# Container.DataItem>' /
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
<asp:Label ID="lblItems" runat="server" Text='<%# Container.DataItem>' />
</ItemTemplate>
</asp:TemplateColumn>
<asp:ButtonColumn ButtonType="PushButton" CommandName="Delete" Text="Delete">
</asp:ButtonColumn>
</Columns>
在删除代码中,如何根据单击的按钮访问数组的索引(每行)?您是否尝试使用下面的方法访问src对象(请注意,这是gridview上的“行删除”事件) 还有其他一些技巧,比如在行的hiddenfield中存储id,然后在delete命令上搜索控件并提取值。我的偏好是上述方法,但实际上取决于你的目标是什么
protected void gv_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
HiddenField field = (HiddenField)gv.Rows[e.RowIndex].FindControl("myHiddenField");
string myValue = field.Value;
// delete it and rebind
}
您是否尝试使用下面的方法访问src对象(请注意,这是gridview上的“RowDeleting”事件) 还有其他一些技巧,比如在行的hiddenfield中存储id,然后在delete命令上搜索控件并提取值。我的偏好是上述方法,但实际上取决于你的目标是什么
protected void gv_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
HiddenField field = (HiddenField)gv.Rows[e.RowIndex].FindControl("myHiddenField");
string myValue = field.Value;
// delete it and rebind
}
这里有一个例子
标记
<asp:DataGrid ID="DataGrid1" runat="server"
AutoGenerateColumns="False"
OnDeleteCommand="DataGrid1_DeleteCommand">
<Columns>
<asp:TemplateColumn HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblItems" runat="server"
Text='<%# Container.DataItem %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:ButtonColumn ButtonType="PushButton"
CommandName="Delete"
HeaderText="Actions"
Text="Delete">
</asp:ButtonColumn>
</Columns>
</asp:DataGrid>
希望这能有所帮助。下面是一个例子
标记
<asp:DataGrid ID="DataGrid1" runat="server"
AutoGenerateColumns="False"
OnDeleteCommand="DataGrid1_DeleteCommand">
<Columns>
<asp:TemplateColumn HeaderText="Name">
<ItemTemplate>
<asp:Label ID="lblItems" runat="server"
Text='<%# Container.DataItem %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:ButtonColumn ButtonType="PushButton"
CommandName="Delete"
HeaderText="Actions"
Text="Delete">
</asp:ButtonColumn>
</Columns>
</asp:DataGrid>
希望这有帮助
private static string[] names = new string[] { "Matt", "Joanne", "Robert" };
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
BindGrid();
}
}
private void BindGrid()
{
DataGrid1.DataSource = names;
DataGrid1.DataBind();
}
protected void DataGrid1_DeleteCommand(object source, DataGridCommandEventArgs e)
{
string deletedItem = ((Label) DataGrid1.Items[e.Item.ItemIndex].FindControl("lblItems")).Text;
names = names.Where(val => val != deletedItem).ToArray();
BindGrid();
}