如何更新datagridview上的数据 [英] How do i update data on a datagridview
本文介绍了如何更新datagridview上的数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
以下代码在datagridview上添加了一个新行,并显示了对新行的更改,而不是更新所选行
The below code adds a new row on the datagridview and shows changes on a new row instead of updating the selected row
#region Project Submit Button
protected void btnSubmitProject_Click(object sender, EventArgs e)
{
try
{
if (dt == null)
{
dt = new DataTable();
DataColumn dc1 = new DataColumn("ProjectName");
DataColumn dc2 = new DataColumn("Description");
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
DataRow dr1 = dt.NewRow();
}
dr1[0] = txtProjectName.Text;
dr1[1] = txtDescription.Text;
dt.Rows.Add(dr1);
gvProjects.DataSource = dt;
gvProjects.DataBind();
Session["data_table"] = dt;
Panel3.Visible = false;
Panel2.Visible = true;
}
catch (Exception ex)
{
lblProjectmsg.Text = ex.Message;
}
ProjectClearfields();
}
#endregion
#region Project Clear Button
protected void btnClearProject_Click(object sender, EventArgs e)
{
ProjectClearfields();
txtProjectName.Focus();
}
#endregion
#region Project Cancel Button
protected void btnCancelProject_Click(object sender, EventArgs e)
{
ProjectClearfields();
Panel2.Visible = true;
Panel3.Visible = false;
}
#endregion
#region Projects_RowDeleting Change Event
protected void gvProjects_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
Session["data_table"] = dt;
if (dt.Rows.Count > 0)
{
dt.Rows[e.RowIndex].Delete();
gvProjects.DataSource = dt;
gvProjects.DataBind();
}
}
#endregion
#region Projects_Updating Change Event
protected void gvProjects_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
Panel3.Visible = true;
Panel2.Visible = false;
string ProjectName = null;
string Description = null;
for (int i = 0; i < gvProjects.Rows.Count; i++)
{
ProjectName = ((TextBox)gvProjects.Rows[i].FindControl("txtProjectName")).Text.Trim();
Description = ((TextBox)gvProjects.Rows[i].FindControl("txtDescription")).Text.Trim();
}
txtProjectName.Text = ProjectName;
txtDescription.Text = Description;
}
#endregion
}
我尝试了什么:
我试过插入其他
What I have tried:
I have tried inserting else
protected void btnSubmitProject_Click(object sender, EventArgs e)
{
try
{
if (dt == null)
{
dt = new DataTable();
DataColumn dc1 = new DataColumn("ProjectName");
DataColumn dc2 = new DataColumn("Description");
dt.Columns.Add(dc1);
dt.Columns.Add(dc2);
DataRow dr1 = dt.NewRow();
}
else{
dr1[0] = txtProjectName.Text;
dr1[1] = txtDescription.Text;
dt.Rows.Add(dr1);
gvProjects.DataSource = dt;
gvProjects.DataBind();
Session["data_table"] = dt;
Panel3.Visible = false;
Panel2.Visible = true;
}
}
catch (Exception ex)
{
lblProjectmsg.Text = ex.Message;
}
ProjectClearfields();
}
推荐答案
您可以创建一个类来存储值:
You can create a class to store the value:
public class Project
{
public int Id { get; set; }
public string ProjectName { get; set; }
public string Description { get; set; }
}
然后在会话中保存类对象列表:
then save the list of class object in session:
public class SessionData
{
public static int IdIndex = 0;
public static List<Project> ProjectList
{
get
{
if (HttpContext.Current.Session["ProjectList"] == null)
HttpContext.Current.Session["ProjectList"] = new List<Project>();
return (List<Project>)HttpContext.Current.Session["ProjectList"];
}
set
{
HttpContext.Current.Session["ProjectList"] = value;
}
}
public static int GetNewID()
{
IdIndex = IdIndex + 1;
return IdIndex;
}
}
用于在gridview中显示列表的简单页面设计:
A simple page design for displaying the list in gridview:
<asp:Button ID="btAdd" runat="server" Text="Add Project" OnClick="btAdd_Click" />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
EmptyDataText="No data" ShowHeaderWhenEmpty="True">
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="Id"
DataNavigateUrlFormatString="EditProject.aspx?id={0}" Text="Edit" />
<asp:BoundField DataField="ProjectName" HeaderText="Project Name" />
<asp:BoundField DataField="Description" HeaderText="Description" />
</Columns>
</asp:GridView>
页面列表后面的代码:
code behind of the page list:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridView1.DataSource = SessionData.ProjectList;
GridView1.DataBind();
}
}
protected void btAdd_Click(object sender, EventArgs e)
{
Response.Redirect("EditProject.aspx", true);
}
编辑数据的示例代码,EditProject.aspx:
sample code behind for editing the data, EditProject.aspx:
public partial class EditProject : System.Web.UI.Page
{
int id
{
get
{
int _id = 0;
int.TryParse(ViewState["id"] + "", out _id);
return _id;
}
set
{
ViewState["id"] = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
int _id = 0;
int.TryParse(Request.QueryString["id"], out _id);
id = _id;
LoadData();
}
}
void LoadData()
{
foreach (var p in SessionData.ProjectList)
{
if (p.Id == id)
{
label1.Text = id.ToString();
txtProjectName.Text = p.ProjectName;
txtDescription.Text = p.Description;
break;
}
}
}
protected void btSave_Click(object sender, EventArgs e)
{
if (id == 0)
{
id = SessionData.GetNewID();
Project p = new Project()
{
Id = id,
ProjectName = txtProjectName.Text,
Description = txtDescription.Text
};
SessionData.ProjectList.Add(p);
}
else
{
foreach (var p in SessionData.ProjectList)
{
if (p.Id == id)
{
p.ProjectName = txtProjectName.Text;
p.Description = txtDescription.Text;
break;
}
}
}
Response.Redirect("~/ProjectList.aspx", true);
}
}
这篇关于如何更新datagridview上的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文