C# 从代码隐藏访问SqlDataSource
我在ASP代码中定义了一个SqlDataSource,并试图从我的C#代码中访问它。我得到一个源未知的错误。我必须做些什么才能从代码隐藏中访问它 C#代码- ASP代码-C# 从代码隐藏访问SqlDataSource,c#,asp.net,C#,Asp.net,我在ASP代码中定义了一个SqlDataSource,并试图从我的C#代码中访问它。我得到一个源未知的错误。我必须做些什么才能从代码隐藏中访问它 C#代码- ASP代码- <EditItemTemplate> <asp:DropDownList ID="ddlDebtorName" runat="server" DataSourceID="SqlDataSourceDebtor"
<EditItemTemplate>
<asp:DropDownList ID="ddlDebtorName" runat="server"
DataSourceID="SqlDataSourceDebtor" DataTextField="Name"
DataValueField="DebtorKey">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSourceDebtor" runat="server"
ConnectionString="<%$ ConnectionStrings:AuditDevConnectionString2 %>"
SelectCommand="sp_fc_vm_getDebtorList" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" DefaultValue="0" Name="ClientKey"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
</EditItemTemplate>
SqlDataSource位于EditItemTemplate中。这意味着这个GridView的每一行都有一个SqlDataSource,不管它是什么 如果要获取GridView中第三行的SqlDataSource,您可能需要以下内容:
gv.Rows[2].FindControl("SqlDataSourceDebtor") as SqlDataSource;
编辑-我做了一个快速测试,效果很好:
<asp:GridView runat="server" ID="gv">
<Columns>
<asp:BoundField DataField="str" />
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList runat="server" DataTextField="name" DataValueField="id" DataSourceID="sqlId"></asp:DropDownList>
<asp:SqlDataSource runat="server" ID="sqlId" ConnectionString="Data Source=DevAdam;Initial Catalog=ZoomieRest;Integrated Security = true;"
SelectCommand="Select top 10 id, name from zoomiesql.subjects where userid = 7"></asp:SqlDataSource>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
这将打印出嵌入式
SqlDataSource
的连接字符串 我得到的sqlSource变量为null。@Craig-sql数据源在您的编辑模板中-请确保此行处于编辑模式,然后再尝试访问它。您能告诉我您能够捕获上述信息的例程吗?看起来好像在OnEditing事件中,该行还没有显示出来。Craig-我在数据绑定后运行了该代码。我不确定在哪个事件之后呈现编辑temaplet
<asp:GridView runat="server" ID="gv">
<Columns>
<asp:BoundField DataField="str" />
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList runat="server" DataTextField="name" DataValueField="id" DataSourceID="sqlId"></asp:DropDownList>
<asp:SqlDataSource runat="server" ID="sqlId" ConnectionString="Data Source=DevAdam;Initial Catalog=ZoomieRest;Integrated Security = true;"
SelectCommand="Select top 10 id, name from zoomiesql.subjects where userid = 7"></asp:SqlDataSource>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
gv.DataSource = new[] { new { str = "A" }, new { str = "B" }, new { str = "C" } };
gv.DataBind();
var sqlSource = gv.Rows[2].FindControl("sqlId") as SqlDataSource;
Response.Write(sqlSource.ConnectionString);