C# 如何动态编辑gridview数据?
如何编辑和删除gridview中的字段,该字段未与数据库连接,并且gridview将由用户在文本框中输入的数据填充?另外,如何使用gridview中的delete按钮删除该行 这是我在ASP页面中的网格视图:C# 如何动态编辑gridview数据?,c#,asp.net,C#,Asp.net,如何编辑和删除gridview中的字段,该字段未与数据库连接,并且gridview将由用户在文本框中输入的数据填充?另外,如何使用gridview中的delete按钮删除该行 这是我在ASP页面中的网格视图: <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CssClass="mGrid" ShowFooter="True" ShowHeaderWhenEmpty="True"
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CssClass="mGrid"
ShowFooter="True" ShowHeaderWhenEmpty="True" Width="70%" OnRowDataBound="GridView1_RowDataBound"
OnRowCommand="GridView1_RowCommand" OnRowCancelingEdit="GridView1_RowCancelingEdit"
OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
<AlternatingRowStyle CssClass="alt" />
<Columns>
<asp:TemplateField HeaderText="Item Code">
<EditItemTemplate>
<asp:TextBox ID="txtItemCode" runat="server" Text='<%# Bind("ItemCode") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="ItemCode" runat="server" Text='<%# Bind("ItemCode") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Product">
<EditItemTemplate>
<asp:TextBox ID="txtProduct" runat="server" Text='<%# Bind("Product") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Product" runat="server" Text='<%# Bind("Product") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Unit Price">
<EditItemTemplate>
<asp:TextBox ID="txtUnitPrice" runat="server" Text='<%# Bind("UnitPrice") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="UnitPrice" runat="server" Text='<%# Bind("UnitPrice") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Batch">
<EditItemTemplate>
<asp:TextBox ID="txtBatch" runat="server" Text='<%# Bind("Batch") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Batch" runat="server" Text='<%# Bind("Batch") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField FooterText="Total" HeaderText="Expiary Date">
<EditItemTemplate>
<asp:TextBox ID="txtExpiaryDate" runat="server" Text='<%# Bind("ExpiaryDate") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="ExpiaryDate" runat="server" Text='<%# Bind("ExpiaryDate") %>'></asp:Label>
</ItemTemplate>
<FooterStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Quantity">
<EditItemTemplate>
<asp:TextBox ID="txtQuantity" runat="server" Text='<%# Bind("Quantity") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Quantity" runat="server" Text='<%# Eval("Quantity") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="GetQuantity" runat="server" Text='<%# GetQuantity() %>'></asp:Label>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Total">
<ItemTemplate>
<asp:Label ID="Total" runat="server" Text='<%# Eval("Total") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="GetTotal" runat="server" Text='<%# GetTotal() %>'></asp:Label>
</FooterTemplate>
</asp:TemplateField>
<asp:CommandField ButtonType="Image" DeleteImageUrl="~/Images/delete.png" EditImageUrl="~/Images/edit.png"
HeaderText="EDIT" ShowDeleteButton="True" ShowEditButton="True" />
</Columns>
<FooterStyle BackColor="Gainsboro" ForeColor="Black" />
<PagerStyle CssClass="pgr" HorizontalAlign="Right" />
</asp:GridView>
我正在使用此代码向网格中添加数据
protected void btnAdd_Click(object sender, EventArgs e)
{
if (ViewState["CurrentData"] != null)
{
var dt = (DataTable)ViewState["CurrentData"];
var count = dt.Rows.Count;
BindGrid(count);
}
else
{
BindGrid(1);
}
Clear();
}
private void BindGrid(int rowcount)
{
var DataTbl = new DataTable();
DataRow DataRw;
DataTbl.Columns.Add("ItemCode", typeof(String));
DataTbl.Columns.Add("Product", typeof(String));
DataTbl.Columns.Add("UnitPrice", typeof(String));
DataTbl.Columns.Add("Batch", typeof(String));
DataTbl.Columns.Add("ExpiaryDate", typeof(String));
DataTbl.Columns.Add("Quantity", typeof(double));
DataTbl.Columns.Add("Total", typeof(double));
if (ViewState["CurrentData"] != null)
{
for (var i = 0; i < rowcount + 1; i++)
{
DataTbl = (DataTable)ViewState["CurrentData"];
if (DataTbl.Rows.Count > 0)
{
DataRw = DataTbl.NewRow();
DataRw[0] = DataTbl.Rows[0][0].ToString();
}
}
DataRw = DataTbl.NewRow();
DataRw[0] = txtItemCode.Text;
DataRw[1] = ddlProduct.SelectedItem;
DataRw[2] = txtUnitPrice.Text;
DataRw[3] = txtBatch.Text;
DataRw[4] = txtExpiaryDate.Text;
DataRw[5] = txtQty.Text;
DataRw[6] = (Convert.ToInt32(Convert.ToDouble(
txtUnitPrice.Text) * Convert.ToDouble(
txtQty.Text)) - ((Convert.ToDouble(
txtUnitPrice.Text) * Convert.ToDouble(
txtQty.Text))) * Convert.ToDouble(
txtProductDiscount.Text) / 100).ToString();
DataTbl.Rows.Add(DataRw);
}
else
{
DataRw = DataTbl.NewRow();
DataRw[0] = txtItemCode.Text;
DataRw[1] = ddlProduct.SelectedItem;
DataRw[2] = txtUnitPrice.Text;
DataRw[3] = txtBatch.Text;
DataRw[4] = txtExpiaryDate.Text;
DataRw[5] = txtQty.Text;
DataRw[6] = (Convert.ToInt32(Convert.ToDouble(
txtUnitPrice.Text) * Convert.ToDouble(
txtQty.Text)) - ((Convert.ToDouble(
txtUnitPrice.Text) * Convert.ToDouble(
txtQty.Text))) * Convert.ToDouble(
txtProductDiscount.Text) / 100).ToString();
DataTbl.Rows.Add(DataRw);
}
if (ViewState["CurrentData"] != null)
{
GridView1.DataSource = (DataTable)ViewState["CurrentData"];
GridView1.DataBind();
}
else
{
GridView1.DataSource = DataTbl;
GridView1.DataBind();
}
ViewState["CurrentData"] = DataTbl;
}
protectedvoidbtnadd\u单击(对象发送者,事件参数e)
{
如果(ViewState[“CurrentData”]!=null)
{
var dt=(数据表)视图状态[“当前数据”];
var count=dt.Rows.count;
BindGrid(计数);
}
其他的
{
绑定网格(1);
}
清除();
}
私有void BindGrid(整数行计数)
{
var DataTbl=新数据表();
DataRow DataRw;
DataTbl.Columns.Add(“ItemCode”,typeof(String));
添加(“产品”,类型(字符串));
添加(“单价”,类型(字符串));
DataTbl.Columns.Add(“批”,typeof(String));
Add(“expirydate”,typeof(String));
添加(“数量”,类型(双));
DataTbl.Columns.Add(“总计”,类型(双));
如果(ViewState[“CurrentData”]!=null)
{
对于(变量i=0;i0)
{
DataRw=DataTbl.NewRow();
DataRw[0]=DataTbl.Rows[0][0].ToString();
}
}
DataRw=DataTbl.NewRow();
DataRw[0]=txtItemCode.Text;
DataRw[1]=ddlProduct.SelectedItem;
DataRw[2]=txtnitprice.Text;
DataRw[3]=txtBatch.Text;
DataRw[4]=txtExpiaryDate.Text;
DataRw[5]=txtQty.Text;
DataRw[6]=(Convert.ToInt32(Convert.ToDouble(
txUnitPrice.Text)*Convert.ToDouble(
txtQty.Text))-((Convert.ToDouble)(
txUnitPrice.Text)*Convert.ToDouble(
txtQty.Text))*Convert.ToDouble(
txtProductDiscount.Text)/100);
DataTbl.Rows.Add(DataRw);
}
其他的
{
DataRw=DataTbl.NewRow();
DataRw[0]=txtItemCode.Text;
DataRw[1]=ddlProduct.SelectedItem;
DataRw[2]=txtnitprice.Text;
DataRw[3]=txtBatch.Text;
DataRw[4]=txtExpiaryDate.Text;
DataRw[5]=txtQty.Text;
DataRw[6]=(Convert.ToInt32(Convert.ToDouble(
txUnitPrice.Text)*Convert.ToDouble(
txtQty.Text))-((Convert.ToDouble)(
txUnitPrice.Text)*Convert.ToDouble(
txtQty.Text))*Convert.ToDouble(
txtProductDiscount.Text)/100);
DataTbl.Rows.Add(DataRw);
}
如果(ViewState[“CurrentData”]!=null)
{
GridView1.DataSource=(DataTable)ViewState[“CurrentData”];
GridView1.DataBind();
}
其他的
{
GridView1.DataSource=DataTbl;
GridView1.DataBind();
}
ViewState[“CurrentData”]=DataTbl;
}
首先,您的代码和查询不清楚。
如果我理解正确,那么代码中的问题是数据没有被删除或更新
正如我在代码中看到的,您正在视图状态中保存数据。请在
GridView1\u行更新()
和GridView1\u行命令()
(希望您将其用于删除)事件的阶段重新检查代码。删除/更新
数据后,还应更新视图状态 如何填充网格…粘贴代码..添加代码。。我需要一些帮助……)你说你正在动态创建gridview,但代码不是…它只是静态的..我想我犯了一个错误。。我从文本框中获取数据。。因此,如何在GridView中编辑删除字段只需弄清楚,您的要求是什么。。