为什么看不到datagrid呀?我的page可以正常显示,但增加记录时点击按钮后datagrid就不见了,缺少什么呀?请帮忙,在线等待!! to yarshray(saga jion) 只要我调用了bindgrid()就要用 if (!ispostback) BindGrid(); 吗?我在page_load()中用了if (!ispostback),但其它的地方没有用,不行吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 别的地方可以不用但这一句绝对不可以少!BindGrid(); 否则你绝对不可以显示! page_load()是第一次登录是要访问的过程,那页面每刷新一次,都要访问page_load()吗? 是的,先执行Page_Load,然后才执行引起返回的事件(比如DataGrid的ItemCommand事件等)一般的做法是,在Page_Load中用if (!IsPostBack){ BindGrid(); }然后,在ItemCommand事件中再次调用BindGrid();函数(包括设置DataSource属性和执行DataBind()方法,而不仅仅是执行DataBind()方法就可以的)。 to icyer() 那我再次在ItemCommand事件中调用BindGrid();函数时, 还用 if (!IsPostBack) { BindBrid(); } 吗? 不用了,直接调用BindBrid(); 方可 可是为什么看不到datagrid呀,我的程序一直有if (!IsPostBack), 就是用按钮刷新后看不到datagrid, Why? 会不会是viewstate disable掉了 你的BindGrid()是怎样写的?如果dataGrid.DataSource=DataSet,那你的dataSet在点击按钮后应该是空的,这样dataGrid.DataSource=null,就看不到DataGrid了。 to castaway()我的BindGrid()是这么写的:DataGrid1.DataSource = mydataSet.Tables["MyZongDui"].DefaultView;这样行不行呀,dataset还会空吗?不过我的dataset却实是空的呀!应该怎么写? 试一试把dataSet保存到Session里面吧。在添加了新项后,把dataSet保存到Session,如Session["myDataSet"] = (object)mydataSet,以后要用的时候再读出来mydataSet = (DataSet)Session["myDataSet"]; 不行呀,这么写有错误:C:\Inetpub\wwwroot\btapp\zdlr.aspx.cs(265): 名称“session”在类或命名空间“btapp.zdlr”中不存在原句为:session["mydataSet"] = (object)mydataSet; mydataSet = (DataSet)session["mydataSet"];怎么表达呀? 应该用mydataSet=(btapp.DataSet1)Session["mydataSet"] 不行,还是不能把新记录添加到datagrid中,什么原因呢? 为什么数据加不到datagrid中呀,dataset好象是空的,即便我库中有数据,dataset也没有,怎么将库中的数据显示到dataset中呀? 在BindGrid()函数中加入:SqlConnection conn = new SqlConnection("....");conn.Open()SqlDataAdapter da = new SqlDataAdapter("select * from ..", conn);DataSet ds = new DataSet();da.Fill(ds);dataGrid.DataSource=ds;dataGrid.DataBind(); to icyer我按照你的方法做了些修改,可还是不行,总是说:错误:未能添加记录,请确保正确填写了字段可我的字段都是字符串,并没有什么错误呀?我的把表结构给你看看:[id] char 10[Name] char 50[address] char 100[gxfw] varchar 50[rysl] varchar 50我只随便输入一些字符串调试,但总说输入不正确,why? 急,帮忙看看!! 在global.asax的Session_Start函数中添加Session["myDataSet"]. 这么用不对呀?错误如下:C:\Inetpub\wwwroot\btapp\Global.asax.cs(26): 只有 assignment、call、increment、decrement 和 new 对象表达式可用作语句 不会哦,protected void Session_Start(Object sender, EventArgs e){ Session["myDataSet"]=null;}不会有问题哦。把你添加纪录的代码贴出来看看。 private void Button1_Click(object sender, System.EventArgs E) { if (Textzdbh.Text == "" || Textzdmc.Text == "") { Message.Text = "错误: '中队编号'、'中队名称'不允许使用空值!"; Message.Style["color"] = "red"; BindGrid(); return; } String insertCmd = "insert into MyZongDui (ID,theName,Address,GXFW,RYSL) values (@ID,@Name,@Address,@GXFW,@RYSL)"; SqlCommand myCommand = new SqlCommand(insertCmd,mysqlConnection); myCommand.Parameters.Add(new SqlParameter("@ID",SqlDbType.VarChar,10)); myCommand.Parameters["@ID"].Value = Textzdbh.Text; myCommand.Parameters.Add(new SqlParameter("@Name",SqlDbType.VarChar,50)); myCommand.Parameters["@Name"].Value = Textzdmc.Text; myCommand.Parameters.Add(new SqlParameter("@Address",SqlDbType.VarChar,100)); myCommand.Parameters["@Address"].Value = Textzddz.Text; myCommand.Parameters.Add(new SqlParameter("@GWFW",SqlDbType.VarChar,50)); myCommand.Parameters.Add("@GXFW",SqlDbType.VarChar,50).Value = Textgxfw.Text; myCommand.Parameters.Add(new SqlParameter("@RYSL",SqlDbType.VarChar,50)); myCommand.Parameters["@RYSL"].Value = Textrysl.Text; Session["mydataSet"] = (object)mydataSet; myCommand.Connection.Open(); try { myCommand.ExecuteNonQuery(); mydataSet = (btapp.DataSet1)Session["mydataSet"]; Message.Text = "<b>已添加记录</b><br>" + insertCmd.ToString(); } catch (SqlException e) { if (e.Number == 2627) Message.Text = "错误:已存在具有相同主键的记录"; else Message.Text = "错误:未能添加记录,请确保正确填写了字段"; Message.Style["color"] = "red"; } myCommand.Connection.Close(); BindGrid(); } 试试DataRow dr;dr = DataSet1.Tables["MyZongDui"].NewRow();dr["ID"] = Textzdbh.Text; ............DataSet1.Tables["MyZongDui"].Rows.Add(dr);SqlCommandBuilder myCommand = new SqlCommandBuilder(sqlDataAdapter1);sqlDataAdapter1.InsertCommand = myCommand.GetInsertCommand();sqlDataAdapter1.Update(DataSet1,"MyZongDui"); 这么写运行后,填加数据时会出现如下错误:异常详细信息: System.ArgumentException: 列“ID”不属于表 MyZongDui。 试试直接执行SQL语句,不用这种动态的。 将列“ID”设置为自动增加。当执行添加记录后,应该重新BindGrid() 刚才的问题我换成中文的字段名就行了。我用楼上castaway() 兄的方法已经添加了数据,但只能添加一个记录,添加第二个记录时就把第一个记录给覆盖了,Why?而且我点击编辑按钮时,datagrid就消失了,是BindGrid()的问题,还是DataGrid1_Edit的问题呢?private void DataGrid1_Edit(Object sender, DataGridCommandEventArgs e) { DataGrid1.EditItemIndex = (int)e.Item.ItemIndex; BindGrid(); }public void BindGrid() { SqlConnection mysqlConnection = new SqlConnection("data source=angel;initial catalog=119;integrated security=SSPI;persist security info=False;workstation id=ANGEL;packet size=4096"); mysqlConnection.Open(); SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter("select * from MyZongDui", mysqlConnection); DataSet mydataSet = new DataSet(); sqlDataAdapter1.Fill(mydataSet, "MyZongDui"); DataGrid1.DataSource = mydataSet.Tables["MyZongDui"].DefaultView; DataGrid1.DataBind(); } my sqladaptor.fill(mydataset)my datagrid.databing()大概是这样反正 更新后还要再一次绑定上去 asp.net ajax 弹出层问题 在线等,一个小问题,谢谢大家 请教一下:中如何实现RowEditing,RowUpdating,RowCancelingEdit??? 框架的问题 关于AspNetPager分页控件的问题,难解决 请问,怎么判断用户是通过wap协议还是http协议来访问我的网站的? 一个有点难以捉摸的问题 DataGrid的分页 请帮帮我 如何为客户端的td指定图片? 请问DropDownList组件 FileStream+StreamReader無法讀出文件中的中文﹐該怎么辦﹖(VB.net)
但这一句绝对不可以少!
BindGrid();
否则你绝对不可以显示!
那页面每刷新一次,都要访问page_load()吗?
一般的做法是,在Page_Load中用
if (!IsPostBack)
{ BindGrid(); }
然后,在ItemCommand事件中再次调用BindGrid();函数(包括设置DataSource属性和执行DataBind()方法,而不仅仅是执行DataBind()方法就可以的)。
那我再次在ItemCommand事件中调用BindGrid();函数时, 还用
if (!IsPostBack)
{ BindBrid(); } 吗?
直接调用BindBrid(); 方可
我的BindGrid()是这么写的:
DataGrid1.DataSource = mydataSet.Tables["MyZongDui"].DefaultView;
这样行不行呀,dataset还会空吗?
不过我的dataset却实是空的呀!应该怎么写?
mydataSet = (DataSet)session["mydataSet"];怎么表达呀?
mydataSet=(btapp.DataSet1)Session["mydataSet"]
SqlConnection conn = new SqlConnection("....");
conn.Open()
SqlDataAdapter da = new SqlDataAdapter("select * from ..", conn);
DataSet ds = new DataSet();
da.Fill(ds);
dataGrid.DataSource=ds;
dataGrid.DataBind();
我按照你的方法做了些修改,可还是不行,总是说:错误:未能添加记录,请确保正确填写了字段可我的字段都是字符串,并没有什么错误呀?我的把表结构给你看看:[id] char 10
[Name] char 50
[address] char 100
[gxfw] varchar 50
[rysl] varchar 50我只随便输入一些字符串调试,但总说输入不正确,why? 急,帮忙看看!!
protected void Session_Start(Object sender, EventArgs e)
{
Session["myDataSet"]=null;
}
不会有问题哦。
把你添加纪录的代码贴出来看看。
{
if (Textzdbh.Text == "" || Textzdmc.Text == "")
{
Message.Text = "错误: '中队编号'、'中队名称'不允许使用空值!";
Message.Style["color"] = "red";
BindGrid();
return;
}
String insertCmd = "insert into MyZongDui (ID,theName,Address,GXFW,RYSL) values (@ID,@Name,@Address,@GXFW,@RYSL)";
SqlCommand myCommand = new SqlCommand(insertCmd,mysqlConnection); myCommand.Parameters.Add(new SqlParameter("@ID",SqlDbType.VarChar,10));
myCommand.Parameters["@ID"].Value = Textzdbh.Text; myCommand.Parameters.Add(new SqlParameter("@Name",SqlDbType.VarChar,50));
myCommand.Parameters["@Name"].Value = Textzdmc.Text; myCommand.Parameters.Add(new SqlParameter("@Address",SqlDbType.VarChar,100));
myCommand.Parameters["@Address"].Value = Textzddz.Text; myCommand.Parameters.Add(new SqlParameter("@GWFW",SqlDbType.VarChar,50));
myCommand.Parameters.Add("@GXFW",SqlDbType.VarChar,50).Value = Textgxfw.Text; myCommand.Parameters.Add(new SqlParameter("@RYSL",SqlDbType.VarChar,50));
myCommand.Parameters["@RYSL"].Value = Textrysl.Text; Session["mydataSet"] = (object)mydataSet; myCommand.Connection.Open(); try
{
myCommand.ExecuteNonQuery();
mydataSet = (btapp.DataSet1)Session["mydataSet"];
Message.Text = "<b>已添加记录</b><br>" + insertCmd.ToString();
}
catch (SqlException e)
{
if (e.Number == 2627)
Message.Text = "错误:已存在具有相同主键的记录";
else
Message.Text = "错误:未能添加记录,请确保正确填写了字段";
Message.Style["color"] = "red";
} myCommand.Connection.Close(); BindGrid();
}
DataRow dr;
dr = DataSet1.Tables["MyZongDui"].NewRow();
dr["ID"] = Textzdbh.Text;
............
DataSet1.Tables["MyZongDui"].Rows.Add(dr);
SqlCommandBuilder myCommand = new SqlCommandBuilder(sqlDataAdapter1);
sqlDataAdapter1.InsertCommand = myCommand.GetInsertCommand();
sqlDataAdapter1.Update(DataSet1,"MyZongDui");
{
DataGrid1.EditItemIndex = (int)e.Item.ItemIndex;
BindGrid();
}
public void BindGrid()
{
SqlConnection mysqlConnection = new SqlConnection("data source=angel;initial catalog=119;integrated security=SSPI;persist security info=False;workstation id=ANGEL;packet size=4096");
mysqlConnection.Open();
SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter("select * from MyZongDui", mysqlConnection);
DataSet mydataSet = new DataSet();
sqlDataAdapter1.Fill(mydataSet, "MyZongDui");
DataGrid1.DataSource = mydataSet.Tables["MyZongDui"].DefaultView;
DataGrid1.DataBind();
}
my datagrid.databing()大概是这样反正 更新后还要再一次绑定上去