关于gridview绑定数据问题,通过变量关联

James-CDD 2013-10-17 09:56:44

我先介绍一下问题:我用两个gridview绑定数据,关联了两个表,点击其中一个gridview控件的选择按钮,将选中的行的内容展开,通过选中的行调用数据库中相关的数据,这个需要在另一个gridview中显示,变量值也传递了,可是其中另一个控件就是不显示数据。之前用行ID可以实现,现在用行里面的其中一个字段就出问题了

下面将代码贴出来:
public void bind() {
string sqlstr = "select * from component";
con = new SqlConnection(strCon);
SqlDataAdapter myda = new SqlDataAdapter(sqlstr, con);
DataSet myds = new DataSet();
con.Open();
myda.Fill(myds, "catalog");
GridView1.DataSource = myds;
GridView1.DataKeyNames = new string[] { "ProNum" };//主键
GridView1.DataBind();
GridView1.HeaderRow.Cells[1].Text = "序号";
GridView1.HeaderRow.Cells[2].Text = "资源名";
GridView1.HeaderRow.Cells[3].Text = "创建时间";
GridView1.HeaderRow.Cells[4].Text = "附加信息";
con.Close();
}
public void bind1(string str) {
string sqlstr = "SELECT ProNum,SubProNum,Name,path FROM subcomponent where ProNum= ' " + str + " ' ";
con = new SqlConnection(strCon);
SqlDataAdapter myda = new SqlDataAdapter(sqlstr, con);
DataSet myds = new DataSet();
con.Open();
myda.Fill(myds, "result");
GridView2.DataSource = myds;
GridView2.DataKeyNames = new string[] { "ID" };//主键
GridView2.DataBind();
GridView2.HeaderRow.Cells[1].Text = "序号";
GridView2.HeaderRow.Cells[2].Text = "产品总类";
GridView2.HeaderRow.Cells[3].Text = "产品编号";
GridView2.HeaderRow.Cells[4].Text = "产品名称";

con.Close();

上面代码是两个控件绑定数据代码,bind1通过变量str传递过来的值就行数据库查找。如果直接运行,就出现绿色代码的问题,问题是“未将对象引用设置到对象的实例”,我修改了下标,还是会出现这个问题;如果我把绿色代码删除,不会出现这个问题,但是gridview控件不显示,标题和数据都不显示。单步调试可以看到ProNum值有变化,而且传给str了,这是怎么个问题,请大侠给点建议。
...全文
222 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
James-CDD 2013-10-17
  • 打赏
  • 举报
回复
补充一点,我的值传递是在 protected void CtlButton_Click(object sender, EventArgs e) { Button button = (Button)sender; GridViewRow gvr = (GridViewRow)button.Parent.Parent; string pk1 = GridView1.DataKeys[gvr.RowIndex].Value.ToString(); bind1(pk1); } 这个是调用bind里面的DataKeyNames ,提取后传给str。如果把pronum换成ID,在控件里面就可以显示了。
feiyun0112 2013-10-17
  • 打赏
  • 举报
回复
你看下
string sqlstr = "SELECT ProNum,SubProNum,Name,path FROM subcomponent where ProNum= ' " + str + " ' ";
的值
应该是没数据

*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
Dotar 2013-10-17
  • 打赏
  • 举报
回复
GridView2.DataKeyNames = new string[] { "ID" };//主键 没看出你后来的Id在哪里 string sqlstr = "SELECT ProNum,SubProNum,Name,path FROM subcomponent where ProNum= ' " + str + " ' ";
天下在我心 2013-10-17
  • 打赏
  • 举报
回复
绿色代码部分需要你在databind()方法之前执行
James-CDD 2013-10-17
  • 打赏
  • 举报
回复
总结一下,遇到这种字符串的问题,一定要注意编写的方式,小心这些隐蔽的小问题,像空格,大小写。
James-CDD 2013-10-17
  • 打赏
  • 举报
回复
引用 9 楼 feiyun0112 的回复:
' er003' 是不是多了个空格? ProNum= ' " + str + " ' ProNum= '" + str + " '
大神啊,呵呵 真是这个问题,谢了啊
feiyun0112 2013-10-17
  • 打赏
  • 举报
回复
' er003' 是不是多了个空格? ProNum= ' " + str + " ' ProNum= '" + str + " '
James-CDD 2013-10-17
  • 打赏
  • 举报
回复
引用 1 楼 zx75991 的回复:
绿色代码部分需要你在databind()方法之前执行
问题依旧,看样子和位置无关
James-CDD 2013-10-17
  • 打赏
  • 举报
回复
[quote=引用 3 楼 feiyun0112 的回复:]
你看下
string sqlstr = "SELECT ProNum,SubProNum,Name,path FROM subcomponent where ProNum= ' " + str + " ' ";
的值
应该是没数据

*****************************************************************************

这个str是有值的,通过PK1传递,可以看图,里面有个赋值pk1赋给了sid.
James-CDD 2013-10-17
  • 打赏
  • 举报
回复
引用 5 楼 z_dota 的回复:
你查询语句中都没有,你后面还莫名其妙的把主键设成ID ,你不觉得这个有误吗?

你这样说感觉有道理,不过我在前面的select中添加了ID,主键设置成ID,运行还是没有显示。我把调试的结果截图给你看看。
Dotar 2013-10-17
  • 打赏
  • 举报
回复
你查询语句中都没有,你后面还莫名其妙的把主键设成ID ,你不觉得这个有误吗?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧