GridView如何获取当前DataRow对象赋值给模板列中的用户控件

inetfuture 2010-09-08 01:14:21

<asp:GridView ID="gv" runat="server" AllowPaging="True" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<uc1:MicroBlogView ID="mbv" DR=??? runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


其中GridView的DataSource是DataTable对象;
MicroBlogView是用户控件,属性DR需要一个DataRow对象
那么如何把当前行的DataRow对象赋值给该用户控件呢?请指教,谢谢!
...全文
347 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
inetfuture 2010-09-08
  • 打赏
  • 举报
回复
还是有问题,决定换别的方法做了,不过还是谢谢大家,尤其是net_lover

(【孟子E章】)
孟子E章 2010-09-08
  • 打赏
  • 举报
回复
<%# ((DataRowView)Container.DataItem).Row%>
应该可以了。

inetfuture 2010-09-08
  • 打赏
  • 举报
回复
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 30: DataRow dr = e.Row.DataItem as System.Data.DataRow;
行 31: MicroBlogView mbv = e.Row.FindControl("mbv") as MicroBlogView;
行 32: mbv.DR = dr;
行 33: }
行 34:

孟子E章 2010-09-08
  • 打赏
  • 举报
回复
<%# ((DataRowView)Container.DataItem).Row%>
inetfuture 2010-09-08
  • 打赏
  • 举报
回复
“/”应用程序中的服务器错误。
--------------------------------------------------------------------------------

无法将类型为“System.Data.DataRowView”的对象强制转换为类型“System.Data.DataRow”。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.InvalidCastException: 无法将类型为“System.Data.DataRowView”的对象强制转换为类型“System.Data.DataRow”。

源错误:


行 19: <asp:TemplateField>
行 20: <ItemTemplate>
行 21: <uc1:MicroBlogView ID="mbv" DR='<%# (DataRow)Container.DataItem %>' runat="server" />
行 22: </ItemTemplate>
行 23: </asp:TemplateField>


源文件: f:\Dot NET\PocketUniversityServer\WebMobile\Default.aspx 行: 21
孟子E章 2010-09-08
  • 打赏
  • 举报
回复
在页面加
<%@ Import Namespace="System.Data" %>
inetfuture 2010-09-08
  • 打赏
  • 举报
回复
编译错误
说明: 在编译向该请求提供服务所需资源的过程中出现错误。请检查下列特定错误详细信息并适当地修改源代码。

编译器错误消息: CS0246: 找不到类型或命名空间名称“DataRow”(是否缺少 using 指令或程序集引用?)

源错误:



行 18: <asp:TemplateField>
行 19: <ItemTemplate>
行 20: <uc1:MicroBlogView ID="mbv" DR='<%# (DataRow)Container.DataItem %>' runat="server" />
行 21: </ItemTemplate>
行 22: </asp:TemplateField>

孟子E章 2010-09-08
  • 打赏
  • 举报
回复
<%# ((DataRowView)Container.DataItem)).Row%>

or

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
System.Data.DataRowView d = (System.Data.DataRowView)e.Row.DataItem;
System.Data.DataRow dr = d.Row;
MicroBlogView x = e.Row.FindControl("mbv") as MicroBlogView;
x.DR = dr ;
}
}
taoistong 2010-09-08
  • 打赏
  • 举报
回复
在ItemDataBound 给数据

Controls_MicroBlogView ucUI = e.Item.FindControl("mbv") as Controls_MicroBlogView ;


放心用吧,么问题
孟子E章 2010-09-08
  • 打赏
  • 举报
回复
<%# (DataRowView)Container.DataItem)%>
inetfuture 2010-09-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 net_lover 的回复:]
<% (DataRowView)Container.DataItem)%>
or
<% (DataRow)Container.DataItem)%>

你可以测试下
[/Quote]

有如下错误:
警告 14 设计器文件生成失败: 无法从其“DR”属性的字符串表示形式“<% (DataRow)Container.DataItem)%>”创建“System.Data.DataRow”类型的对象。 F:\Dot NET\PocketUniversityServer\WebMobile\Default.aspx 21 0 WebMobile
错误 15 找不到类型或命名空间名称“MicroBlogView”(是否缺少 using 指令或程序集引用?) F:\Dot NET\PocketUniversityServer\WebMobile\Default.aspx.cs 30 17 WebMobile
孟子E章 2010-09-08
  • 打赏
  • 举报
回复
你还可以在绑定事件里处理
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
System.Data.DataRow d = e.Row.DataItem as System.Data.DataRow;
MicroBlogView x = e.Row.FindControl("mbv") as MicroBlogView;
x.DR = d;
}
}
孟子E章 2010-09-08
  • 打赏
  • 举报
回复
<% (DataRowView)Container.DataItem)%>
or
<% (DataRow)Container.DataItem)%>

你可以测试下
inetfuture 2010-09-08
  • 打赏
  • 举报
回复
不明白……如何获取当前行的DataRow?
冰川711 2010-09-08
  • 打赏
  • 举报
回复
DR=<%=ViewState["dr"]%>


DataTable tab=new DataTable()
DataRow dr=tab.Rows[0];
ViewState["dr"]=dr;


在用户控件页面接过去了 转换一下在用

(DataRow)DR

62,046

社区成员

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

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

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

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