Gridview中DataRowView的问题

jiyanchn 2009-07-22 06:57:57
我在Gridview中使用RowDataBound事件。然后我将每一行的数据放到DataRowView中。当我从DataRowView中提取但个数据时出现错误:System.NullReferenceException: Object reference not set to an instance of an object.错误出现在:string bID = RowView["businessID"].ToString();

我的代码如下

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataRowView RowView = (DataRowView)e.Row.DataItem;
string bID = RowView["businessID"].ToString();
if (e.Row.RowState == DataControlRowState.Normal)
{
HyperLink BusinessLinkObject = (HyperLink)e.Row.FindControl("HyperLinkBusinessName");
if (e.Row.Cells[9].Text == "餐馆美食")
BusinessLinkObject.NavigateUrl = "restaurant.aspx?id=" + RowView["businessID"];
}
}


我不明白的地方有两处:
1,就是为什么会有这个错误。
2,同样是使用RowView["businessID"], 为什么在这段代码的第四行会报错,在倒数第三行中使用却不报错?

请前辈执教!!谢谢!
...全文
120 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
che2piaopiao 2009-07-22
  • 打赏
  • 举报
回复
Convert.Tostring(Object)
chenguang79 2009-07-22
  • 打赏
  • 举报
回复
如何修改上面的兄弟们已经说了。
因为你的值没有放在DataControlRowState.Normal之内。这样它会把栏目哪行也算上的。这样就会报错了
moduofanchen 2009-07-22
  • 打赏
  • 举报
回复
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
string bID = "";
if (e.Row.RowState == DataControlRowState.Normal)
{DataRowView RowView = (DataRowView)e.Row.DataItem;

bID=RowView["businessID"].ToString();
HyperLink BusinessLinkObject = (HyperLink)e.Row.FindControl("HyperLinkBusinessName");
if (e.Row.Cells[9].Text == "餐馆美食")
BusinessLinkObject.NavigateUrl = "restaurant.aspx?id=" + bID; }
}

上面的错了
moduofanchen 2009-07-22
  • 打赏
  • 举报
回复
 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataRowView RowView = (DataRowView)e.Row.DataItem;
string bID = "";
if (e.Row.RowState == DataControlRowState.Normal)
{
bID=RowView["businessID"].ToString();
HyperLink BusinessLinkObject = (HyperLink)e.Row.FindControl("HyperLinkBusinessName");
if (e.Row.Cells[9].Text == "餐馆美食")
BusinessLinkObject.NavigateUrl = "restaurant.aspx?id=" + bID; }
}
沉序员 2009-07-22
  • 打赏
  • 举报
回复
dd
yuanchangyuan2125 2009-07-22
  • 打赏
  • 举报
回复
此异常 表明 你引用了一个空对象
RowView["businessID"].ToString(); 报错 应该可以说明 businessID 取不到这个值
仔细检查一下你的设计器 断点走一遍 看看RowView["businessID"].ToString(); 是否能取到值。
gdjlc 2009-07-22
  • 打赏
  • 举报
回复
再改下:


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView RowView = (DataRowView)e.Row.DataItem;
string bID = RowView["businessID"].ToString();

HyperLink BusinessLinkObject = (HyperLink)e.Row.FindControl("HyperLinkBusinessName");
if (e.Row.Cells[9].Text == "餐馆美食")
BusinessLinkObject.NavigateUrl = "restaurant.aspx?id=" + bID;
}
}

gdjlc 2009-07-22
  • 打赏
  • 举报
回复
BusinessLinkObject.NavigateUrl = "restaurant.aspx?id=" + RowView["businessID"];

---------------------------------
BusinessLinkObject.NavigateUrl = "restaurant.aspx?id=" + bID;
gdjlc 2009-07-22
  • 打赏
  • 举报
回复

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowState == DataControlRowState.Normal)
{
DataRowView RowView = (DataRowView)e.Row.DataItem;
string bID = RowView["businessID"].ToString();

HyperLink BusinessLinkObject = (HyperLink)e.Row.FindControl("HyperLinkBusinessName");
if (e.Row.Cells[9].Text == "餐馆美食")
BusinessLinkObject.NavigateUrl = "restaurant.aspx?id=" + RowView["businessID"];
}
}

dengchenlu 2009-07-22
  • 打赏
  • 举报
回复
BusinessLinkObject.NavigateUrl = "restaurant.aspx?id=" + RowView["businessID"].ToString();

应该是 string 和 Object 相加的问题

62,240

社区成员

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

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

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

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