又是“未将对象引用设置到对象的实例”,

philipsslg 2006-05-09 01:37:56
protected void OrdersList_ItemCommand(object source, DataListCommandEventArgs e)
{
// change the selected index of Orders Datalist
string cmd = ((LinkButton)e.CommandSource).CommandName;
DataList senderlist=(DataList)source;

try
{
if (cmd == "select")
{
senderlist.SelectedIndex = e.Item.ItemIndex;
}
// re-bind to display orders info with new selected index.
senderlist.DataSource = GetOrders(ViewState[_CustomerName].ToString());
senderlist.DataBind();

}
catch (Exception ex)
{
PurchOrdTrack.clCommonFunctions.fxAlert("Status: " + ex.Message, this.Page);
}
}

在绑定senderlist.DataBind();
是出现这个提示,我断点进去看senderlist 不为null啊,
我段代码以前是VB.NET,VB.NET 下是正常的,到了C#就出现这问题。
...全文
371 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
philipsslg 2006-05-11
  • 打赏
  • 举报
回复
C#下加那样也不行啊,VB.NET加不加都是正常。
philipsslg 2006-05-11
  • 打赏
  • 举报
回复
即使是改成这样也是报错。
senderlist.DataSource = null;
senderlist.DataBind();

可是我断点看senderlist是DataList类型,不是null啊。
smile9961 2006-05-10
  • 打赏
  • 举报
回复
這樣試試:

Protected Sub OrdersList_ItemCommand(ByVal Sender As Object, ByVal e As DataListCommandEventArgs)
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
...
End If
End Sub 'OrdersList_ItemCommand
philipsslg 2006-05-10
  • 打赏
  • 举报
回复
这是VB.NET的代码
Protected Sub OrdersList_ItemCommand(ByVal Sender As Object, ByVal e As DataListCommandEventArgs)
' change the selected index of Orders Datalist
Dim cmd As String = CType(e.CommandSource, LinkButton).CommandName
Dim senderlist As DataList = CType(Sender, DataList)

Try

If cmd = "select" Then
senderlist.SelectedIndex = e.Item.ItemIndex
End If
' re-bind to display orders info with new selected index.
senderlist.DataSource = GetOrders(CStr(ViewState(_CustomerName)))
senderlist.DataBind()

Catch ex As Exception

lblStatus.Text = "Status: " & ex.Message

End Try
End Sub 'OrdersList_ItemCommand
philipsslg 2006-05-09
  • 打赏
  • 举报
回复
问题是在OrderList 的ItemCommand 事件中,执行 OrderList 的重新绑定。
smile9961 2006-05-09
  • 打赏
  • 举报
回复
你是要将数据绑定到OrderList吧,那就需要先用FindControl的方法找到控件:

DataList OrderList= (DataList)(e.Item.FindControl("OrderList")
philipsslg 2006-05-09
  • 打赏
  • 举报
回复
而且DataList senderlist=(DataList)source;这样 ,senderlist能得到是DataList类型,而非null。就是在事件函数OrdersList_ItemCommand 中绑定出问题,其它地方都正常。
philipsslg 2006-05-09
  • 打赏
  • 举报
回复
是的
xxuu503 2006-05-09
  • 打赏
  • 举报
回复
怎么看怎么觉得别扭


这个source一定是那个datalist么?
xczgb 2006-05-09
  • 打赏
  • 举报
回复
UP
philipsslg 2006-05-09
  • 打赏
  • 举报
回复
CustomersList 是 OrderList的父控件,在CustomersList_ItemCommand 事件中执行:
DataList senderlist = (DataList)((DataList)Sender).SelectedItem.FindControl("OrderList");

senderlist.DataSource = GetOrders(ViewState[_CustomerName].ToString());
senderlist.DataBind();

不会出现异常
philipsslg 2006-05-09
  • 打赏
  • 举报
回复
用FindControl找到也没用,
DataList senderlist = (DataList)((DataList)Page.FindControl("CustomerList")).SelectedItem.FindControl("OrderList");
但是还是不能senderlist.DataBind();首先声明senderlist 不为null。
greatbag 2006-05-09
  • 打赏
  • 举报
回复
要先用FindControl()方法把source找到
philipsslg 2006-05-09
  • 打赏
  • 举报
回复
ViewState[_CustomerName]里面值是在的。不过这个DataList 是嵌套在别的DataList内的,难道这样DataList就不能重新绑定了吗?
philipsslg 2006-05-09
  • 打赏
  • 举报
回复
我把DataList senderlist=(DataList)source; 改成
DataList senderlist=new DataList();
就没有异常,虽然这样做不是我想实现的。
winner2050 2006-05-09
  • 打赏
  • 举报
回复
VB.NET里当ViewState不存在的时候当作是空值,Dim str as string =ViewState("www")
最后str=""

C#里不行。要先判断ViewState是否存在然后才能赋值
if (ViewState["www"]==null)
{
Response.Write("不存在");
}
else
{
//可以赋值了
string str = ViewState["www"];
}
jimu8130 2006-05-09
  • 打赏
  • 举报
回复
ViewState["_CustomerName"].ToString()
是这样写么?
jimu8130 2006-05-09
  • 打赏
  • 举报
回复
另外你得把你的linkbutton的commandname属性设置为select!!
viena 2006-05-09
  • 打赏
  • 举报
回复
是啊,直接ViewState[_CustomerName].ToString()比较冒险,有可能是null的,先判断一下咯
jimu8130 2006-05-09
  • 打赏
  • 举报
回复
直接用e.commandname =="select"来判断啊
加载更多回复(6)

62,046

社区成员

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

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

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

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