Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 直接数据绑定到sqldatasource_C#_Asp.net - Fatal编程技术网

C# 直接数据绑定到sqldatasource

C# 直接数据绑定到sqldatasource,c#,asp.net,C#,Asp.net,在Asp.net C#中,我只是尝试将控件绑定到返回一条记录(一行)的sqldatasource 作者 事件日期 此代码失败,正确的方法是什么?通常,如果要直接将数据绑定到SQLDatasource,可以这样做: SqlDataSource sds = GetMyDataSource(); ListView lv_MyData = new ListView(); lv_MyData.DataSource = sds; lv_MyData.DataBind(); 如果要将数据绑定到as

在Asp.net C#中,我只是尝试将控件绑定到返回一条记录(一行)的sqldatasource


作者
事件日期



此代码失败,正确的方法是什么?

通常,如果要直接将数据绑定到SQLDatasource,可以这样做:

SqlDataSource sds = GetMyDataSource();
ListView lv_MyData = new ListView();
lv_MyData.DataSource = sds;
lv_MyData.DataBind();
如果要将数据绑定到aspx页面上的DataSourceID,可以这样做:

<asp:ListView ID="lv_MyData" runat="server" DataSourceId="sds_MyData">
...
</asp:ListView>

<asp:SqlDataSource ID="sds_MyData" .... />

(这是即兴的,如果需要,我可以用具体的细节进行备份)

DataSource控件公开记录或对象的集合,DataBinder希望迭代该集合。在您的示例中,Eval()方法希望从集合中的当前索引中检索“Name”字段

我假设您正试图绑定到标签或文本框之类的控件,而不是迭代数据源的模板控件。在这种情况下,DataBinder.Eval()将从当前索引中查找“Name”字段,但没有有效的当前索引,因为它没有上下文

如果这不合理,并且您需要澄清,请发回。如果需要,我会详细说明

更新:


在示例代码中,您得到了一个表中的一行。如果周围没有某种模板化控件(如转发器),就没有绑定的上下文。这就像要求集合对象从其元素之一获取值,而不指定从哪个元素检索值。

您需要在代码隐藏中调用DataSource控件的Select方法,以使其执行Select命令。完成此操作后,可以访问生成的数据,但如何访问取决于数据源是处于数据集模式还是数据源模式


这里-我写了一篇关于它的文章:

为什么你只发布这段代码?如果您希望我们告诉您想要的是错误的,请发布一段有用的代码。另外,您的代码是如何失败的?电脑融化了?你有错误吗?我正在尝试绑定到单一控件(不是在listview、detailsview等容器中),只是一个普通的文本框或字段。很好,完全理解。Eval()专门用于模板化控件。对于非模板控件,是否有一种不使用c#代码的对应评估方法?简单的解决方案是将表行放在模板控件(如中继器)内的模板中。还有其他方法,比如下面发布的@Abe或@Mike。从长远来看,它们无疑更好,但要使代码立即工作,您可以将其包装在模板控件中。
SqlDataSource sds = GetMyDataSource();
ListView lv_MyData = new ListView();
lv_MyData.DataSource = sds;
lv_MyData.DataBind();
<asp:ListView ID="lv_MyData" runat="server" DataSourceId="sds_MyData">
...
</asp:ListView>

<asp:SqlDataSource ID="sds_MyData" .... />