如何在没有数据库的情况下从gridview中删除;在调用方法之前检查确定对象是否为空
how to delete from gridview without database "check to determine if the object is null before calling the method"
是我的。cs文件中的代码
private void BindGridview(int rowcount)
{
DataTable dt = new DataTable();
DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("Code", typeof(String)));
dt.Columns.Add(new System.Data.DataColumn("Course", typeof(String)));
dt.Columns.Add(new System.Data.DataColumn("Credit", typeof(String)));
if (ViewState["CurrentData"] != null)
{
for (int i = 0; i < rowcount + 1; i++)
{
dt = (DataTable)ViewState["CurrentData"];
if (dt.Rows.Count > 0)
{
dr = dt.NewRow();
dr[0] = dt.Rows[0][0].ToString();
}
}
dr = dt.NewRow();
dr[0] = this.cboCourseCode.Text;
dr[1] = this.txtCourseName.Text;
dr[2] = this.txtCredit.Text;
dt.Rows.Add(dr);
}
else
{
dr = dt.NewRow();
dr[0] = this.cboCourseCode.Text;
dr[1] = this.txtCourseName.Text;
dr[2] = this.txtCredit.Text;
dt.Rows.Add(dr);
}
// If ViewState has a data then use the value as the DataSource
if (ViewState["CurrentData"] != null)
{
GridView1.DataSource = (DataTable)ViewState["CurrentData"];
GridView1.DataBind();
}
else
{
// Bind GridView with the initial data assocaited in the DataTable
GridView1.DataSource = dt;
GridView1.DataBind();
}
// Store the DataTable in ViewState to retain the values
ViewState["CurrentData"] = dt;
}
protected void BindGrid()
{
GridView1.DataSource = ViewState["dt"] as DataTable;
GridView1.DataBind();
}
protected void OnRowDeleting(object sender, GridViewDeleteEventArgs e)
{
int index = Convert.ToInt32(e.RowIndex);
DataTable dt = ViewState["dt"] as DataTable;
dt.Rows[e.RowIndex].Delete();
ViewState["dt"] = dt;
BindGrid();
}
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string Code = e.Row.Cells[0].Text;
foreach (Button button in e.Row.Cells[3].Controls.OfType<Button>())
{
if (button.CommandName == "Delete")
{
button.Attributes["onclick"] = "if(!confirm('Do you want to delete " + Code + "?')){ return false; };";
}
}
}
}
protected void cboCourseCode_SelectedIndexChanged(object sender, EventArgs e)
{
this.Populate_Course_Details();
}
protected void BtnAdd_Click(object sender, EventArgs e)
{
/* DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Code"), new DataColumn("Course"), new DataColumn("Credit") });
dt.Rows.Add(this.cboCourseCode.Text, this.txtCourseName.Text, this.txtCredit.Text);
ViewState["dt"] = dt;
BindGrid();*/
if (ViewState["CurrentData"] != null)
{
DataTable dt = (DataTable)ViewState["CurrentData"];
int count = dt.Rows.Count;
BindGridview(count);
}
else
{
BindGridview(1);
}
}
我的aspx
文件也有这个gridview
<asp:GridView ID="GridView1" CssClass = "Grid" runat="server" OnRowDeleting="OnRowDeleting" AutoGenerateColumns = "false" OnRowDataBound = "OnRowDataBound">
<Columns>
<asp:BoundField DataField="Code" HeaderText="Code" />
<asp:BoundField DataField="Course" HeaderText="Course" />
<asp:BoundField DataField="Credit" HeaderText="Credit" />
<asp:CommandField ShowDeleteButton="True" ButtonType="Button" />
</Columns>
</asp:GridView>
当我开始删除,我得到这个错误:
在调用
方法之前检查对象是否为空
错误原因
在OnRowDeleting函数中,你正在创建数据表并分配viewstate["dt"],它没有当前数据。这就是为什么它显示Object是Null
<<p> 解决方案/strong>试试这个首先将其中一列作为数据键。考虑我想让"代码"列作为数据键。Datakey将帮助找到要删除的特定行
<asp:GridView ID="GridView1" CssClass = "Grid" runat="server" OnRowDeleting="OnRowDeleting" AutoGenerateColumns = "false" OnRowDataBound = "OnRowDataBound" DataKeyNames="Code">
.cs代码
用currentdata
创建一个数据表使"Code"列为主键
使用find()
查找特定代码(您想要删除的代码)然后使用delete()函数删除该行
反映viewsate["currentdata"]中的删除
然后绑定gridview
protected void OnRowDeleting(object sender, GridViewDeleteEventArgs e)
{
string code = GridView1.DataKeys[e.RowIndex].Value.ToString();
if (ViewState["CurrentData"] != null)
{
DataTable dt = (DataTable)ViewState["CurrentData"];
dt.PrimaryKey = new DataColumn[] { dt.Columns["Code"] };
dt.Rows.Find(code).Delete();
ViewState["CurrentData"] = dt;
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
相关文章:
- 递归使用 eval() 是检查程序执行的好方法吗?
- 用于检查数组中是否存在元素的javascript自定义方法
- 指令加载真的很长,检查加载时间的方法
- PhantomJS - 检查javascript函数是否正在运行的任何方法
- 检查变量是否为字符串的简单方法
- 有没有一种方法可以检查javascript以毫秒为单位执行一个函数需要多长时间
- 点击一个按钮,有没有一种方法可以检查Div内部的图像
- JavaScript:检查变量是否等于两个或多个值之一的简单方法
- 如果我返回表,检查 Ajax 调用是否为 200 OK的最佳方法是什么
- 检查对话框是否为 Open 会引发“初始化前无法在对话框上调用方法”错误
- 在 Node.js 中检查带有除沟器的方法链
- 检查浏览器是否支持iFrame上的加载方法
- 检查 redux 状态是否更改的简单方法
- Javascript应该使用什么方法来查找或检查数组中是否存在字符串
- 如何检查方法 modernizer.mq 是否受支持
- 检查方法返回未定义
- 将webpurify javascript检查方法的状态返回到主程序
- 重写tinymce 4拼写检查方法
- 如何检查方法是否调用了茉莉花单元测试
- Js函数来检查方法是否抛出