asp.net - 使用 onRowEditing/Updating 的编辑按钮不起作用。
问题描述
当我在文本框中编辑内容并按编辑时,文本不会更新并恢复为原始输入。我使用了 editItemTemplate 但这会使我的字段在按下编辑时消失,而使用 itemTemplate 会在按下编辑按钮之前将该字段作为文本框打开以进行编辑。这是它的外观图像。布局
请参阅以下 html 页面代码 -
<div class="GridviewDiv">
<asp:GridView runat="server" ID="gvdeets" AllowPaging="true" PageSize="10" AutoGenerateColumns="false" Width="420px" onRowCancelingEdit="gvdeets_cancelEdit"
OnRowUpdating="gvdeets_Update" OnRowEditing="gvdeets_RowEditing" OnPageIndexChanging="gvdeets_PageIndexChanging" Visible="true">
<HeaderStyle CssClass="headerstyle"/>
<Columns>
<asp:TemplateField HeaderText="Select">
<ItemTemplate>
<asp:CheckBox ID="cbSelect" CssClass="gridCB" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Id" HeaderText="Id" />
<asp:TemplateField HeaderText="Name" >
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Name") %>'></asp:TextBox>
</ItemTemplate>
<EditItemTemplate>
<asp:Label ID="TextBox1" runat="server" Text='<%# Bind("Name") %>' Visible="false"></asp:Label>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Password" >
<ItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("Password") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="City" >
<ItemTemplate>
<asp:TextBox ID="DropDownList1" runat="server" Text='<%# Bind("City") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Gender" HeaderText="Gender" />
<asp:TemplateField HeaderText="Mail" >
<ItemTemplate>
<asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("Mail") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField Headertext="Update" >
<itemtemplate>
</Columns>
</asp:GridView>
</div>
这是后端 -
using System;
using System.Configuration;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
namespace sms
{
internal class Method
{
private SqlCommand cmd;
public Method(SqlCommand cmd)
{
this.cmd = cmd;
}
}
public partial class deets : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGridview();
}
else
{
if (hdn.Value == "ADD")
{
Button();
BindGridview();
}
else if (hdn.Value == "EDIT")
{
Button();
BindGridview();
}
else if (hdn.Value == "DELETE")
{
dlt();
BindGridview();
}
else if (hdn.Value == "save")
{
Button();
BindGridview();
}
hdn.Value = "";
}
}
protected void BindGridview()
{
DataSet ds = new DataSet();
SqlConnection con = new SqlConnection("Server = localhost;Initial Catalog=Login;Integrated Security=True;");
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from TblLogin", con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
con.Close();
gvdeets.DataSource = ds;
gvdeets.DataBind();
}
}
protected void gvdeets_RowEditing(object sender,GridViewEditEventArgs
e)
{
gvdeets.EditIndex = e.NewEditIndex;
this.BindGridview();
}
protected void gvdeets_cancelEdit(object sender,
GridViewCancelEditEventArgs e)
{
gvdeets.EditIndex = -1;
BindGridview();
}
public void gvdeets_Update(object sender, GridViewUpdateEventArgs e)
{
int Id =
Convert.ToInt32(gvdeets.DataKeys[e.RowIndex].Value.ToString());
string Name = (gvdeets.Rows[e.RowIndex].FindControl("txt1") as TextBox).ToString();
string Password = (gvdeets.Rows[e.RowIndex].FindControl("TextBox2") as TextBox).ToString();
string City = (gvdeets.Rows[e.RowIndex].FindControl("DropDownList1") as DropDownList).ToString();
string Mail = (gvdeets.Rows[e.RowIndex].FindControl("TextBox4") as TextBox).ToString();
string strConnString =
ConfigurationManager.ConnectionStrings["conString"].ConnectionString;
using (SqlConnection con = new SqlConnection(strConnString))
{
string query = "UPDATE TblLogin SET Name =@Name,
Password=@Password, City=@City, Mail=@Mail WHERE Id = @Id";
using (SqlCommand cmd = new SqlCommand(query))
{
cmd.Connection = con;
cmd.Parameters.AddWithValue("@Name", Name);
cmd.Parameters.AddWithValue("@Password", Password);
cmd.Parameters.AddWithValue("@City", City);
cmd.Parameters.AddWithValue("@Mail", Mail);
cmd.Parameters.AddWithValue("@Id", Id);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
Response.Redirect(Request.Url.AbsoluteUri);
}
}
}
protected void gvdeets_PageIndexChanging(object sender,
GridViewPageEventArgs e)
{
gvdeets.PageIndex = e.NewPageIndex;
BindGridview();
}
} }
本质上,我的编辑按钮不能正常工作。文本框是可编辑的,但当我按下编辑按钮时不会更新。请在您认为我可以改进的地方帮助我。
感谢您的时间和帮助。
PS-我只上传了我的代码的相关部分,如果你想要它的全部,请告诉我。
解决方案
推荐阅读
- django - 配置文件未更新或更新未显示在 django 中
- java - Rascal 模块未链接到 Java 类
- bash - 预签名 AWS S3 文件
- c# - 如何在 Asp.Net MVC 中获取 Count() 的平均值
- airflow - 如何选择 Apache Airflow 调度程序更新 DAG 的频率?
- reactjs - 图像未在 React JS 中加载
- log4j - flink 1.11.3 中是否有任何配置来管理或归档文件?
- java - 如何使用 Maven 和系统依赖项创建可执行 jar?
- python - 从列表创建数据框
- java - 如何将 zip 多部分提取到列表
然后制作每个文件的多部分?