c# - 从数据库中获取数据到文本框c#asp
问题描述
我有网格视图编辑按钮,当用户单击编辑时,页面将重定向到 url 中带有文本框字段的其他页面数据库
这个网格视图:http: //prntscr.com/llgid0
这是带有 {Employee_ID} 的编辑页面:http: //prntscr.com/llgio4
编辑页面的html:
<body>
<form id="form2" runat="server">
<div>
Employee ID :
<asp:TextBox ID="id" runat="server" ></asp:TextBox>
<br />
Employee Name : <asp:TextBox ID="name" runat="server"></asp:TextBox>
<br />
Address :
<asp:TextBox ID="address" runat="server"></asp:TextBox>
<br />
Birthdate :
<asp:TextBox ID="birth" runat="server" TextMode="Date"></asp:TextBox>
<br />
Mobile No :<asp:TextBox ID="mobile" runat="server"></asp:TextBox>
<br />
Email :
<asp:TextBox ID="email" runat="server"></asp:TextBox>
<br />
Country :<asp:TextBox ID="co" runat="server"></asp:TextBox>
<br />
CityName :<asp:TextBox ID="city" runat="server"></asp:TextBox>
<br />
UserName :<asp:TextBox ID="user" runat="server"></asp:TextBox>
<br />
Password :<asp:TextBox ID="pass" runat="server" ></asp:TextBox>
<br />
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="Update" />
</div>
</form>
<div>
</div>
</form>
<p class="auto-style1">
</p>
</body>
</html>
gridview 页面后面的代码:
public partial class table : System.Web.UI.Page
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlcon"].ConnectionString);
protected void Page_Load(object sender, EventArgs e)
{
if (con.State == ConnectionState.Closed)
{
con.Open();
}
if (!Page.IsPostBack)
{
BindEmpGrid();
txtSearch.Enabled = false;
}
}
private void BindEmpGrid()
{
SqlDataAdapter adp = new SqlDataAdapter();
DataTable dt = new DataTable();
try
{
adp = new SqlDataAdapter("select * from Emp", con);
adp.Fill(dt);
if (dt.Rows.Count > 0)
{
grdEmp.DataSource = dt;
grdEmp.DataBind();
}
else
{
grdEmp.DataSource = null;
grdEmp.DataBind();
}
}
catch (Exception ex)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "Message", "alert('Error occured : " + ex.Message.ToString() + "');", true);
}
finally
{
dt.Clear();
dt.Dispose();
adp.Dispose();
con.Close();
}
}
protected void ddlSearchBy_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddlSearchBy.SelectedItem.Text == "All")
{
txtSearch.Text = string.Empty;
txtSearch.Enabled = false;
}
else
{
txtSearch.Enabled = true;
txtSearch.Text = string.Empty;
txtSearch.Focus();
}
}
protected void btnSearch_Click(object sender, EventArgs e)
{
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand();
SqlDataAdapter adp = new SqlDataAdapter();
try
{
if (ddlSearchBy.SelectedItem.Text == "Employee_ID")
{
getEmpRecords(ddlSearchBy.SelectedItem.Text, txtSearch.Text.Trim());
}
else if (ddlSearchBy.SelectedItem.Text == "Employee_name")
{
getEmpRecords(ddlSearchBy.SelectedItem.Text, txtSearch.Text.Trim());
}
else if (ddlSearchBy.SelectedItem.Text == "Mobile")
{
getEmpRecords(ddlSearchBy.SelectedItem.Text, txtSearch.Text.Trim());
}
else
{
getEmpRecords(ddlSearchBy.SelectedItem.Text, txtSearch.Text.Trim());
}
}
catch (Exception ex)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "Message", "alert('Error occured : " + ex.Message.ToString() + "');", true);
}
finally
{
dt.Clear();
dt.Dispose();
cmd.Dispose();
con.Close();
}
}
private void getEmpRecords(string searchBy, string searchVal)
{
DataTable dt = new DataTable();
SqlCommand cmd = new SqlCommand();
SqlDataAdapter adp = new SqlDataAdapter();
try
{
cmd = new SqlCommand("all", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@SearchBy", searchBy);
cmd.Parameters.AddWithValue("@SearchVal", searchVal);
adp.SelectCommand = cmd;
adp.Fill(dt);
if (dt.Rows.Count > 0)
{
grdEmp.DataSource = dt;
grdEmp.DataBind();
}
else
{
grdEmp.DataSource = dt;
grdEmp.DataBind();
}
}
catch (Exception ex)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "Message", "alert('Error occured : " + ex.Message.ToString() + "');", true);
}
finally
{
dt.Clear();
dt.Dispose();
cmd.Dispose();
con.Close();
}
}
protected void grdEmp_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
grdEmp.PageIndex = e.NewPageIndex;
BindEmpGrid();
}
protected void grdEmp_SelectedIndexChanged(object sender, EventArgs e)
{
}
protected void grdEmp_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Del")
{
int EmpID = int.Parse(e.CommandArgument.ToString());
DeleteRecord(EmpID);
BindEmpGrid();
}
if (e.CommandName == "Edit")
{
string EmpID = e.CommandArgument.ToString();
Response.Redirect("update.aspx?Id="+ EmpID);
}
}
private void DeleteRecord(int EmpID)
{
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "delete from Emp where Employee_ID = @a";
cmd.Parameters.AddWithValue("@a", EmpID);
cmd.Connection = con;
cmd.ExecuteNonQuery();
con.Close();
}
}
解决方案
如果您使用 id 重定向到其他页面,则可以使用多种解决方案。
1) 使用查询字符串 id 从数据库中获取详细信息并填充值。
2)当您单击编辑按钮时将您的数据存储到会话中,然后从您的会话ID中获取详细信息到其他页面/表单中。
public void fetchEmployeeDetail()
{
SqlDataAdapter adp = new SqlDataAdapter();
DataTable dt = new DataTable();
try
{
adp = new SqlDataAdapter("select * from Emp where number =" + Request.QueryString["id"], con);
adp.Fill(dt);
if (dt.Rows.Count > 0)
{
name.Text = dt.rows[0]["name"].ToString(); // name means your table column name
address.Text = dt.rows[0]["name"].ToString();
birth.Text = dt.rows[0]["name"].ToString();
}
}
catch
{
}
}
推荐阅读
- android - 在没有 FCM 的情况下使用颤振发送推送通知
- c# - 如何在以特定名称开头的列中查找行?
- scrapy - 以href为CDN端点的scrapy下载图像
- javascript - 递归:前缀和
- python - 为什么我不能更改导入到 Jupyter 笔记本中的 .py 文件中的变量?
- android - ViewModel在Activity中设置数据并在Fragment中使用
- android - 打开特定文件扩展名的文件选择器
- monaco-editor - 在 IMarkerData 中使用降价
- reactjs - 在没有 MDX 的 Markdown 中插入一个 React 组件
- azure - 无法 RDP 到 Azure 中 Service Fabric 群集的虚拟机规模集实例