我有一个带有DetailsRow的ASPX GridView,我需要在展开的行上显示一些信息,以及添加一些数据的机会。我现在的问题是当DetailsRow扩展时选择正确的数据。这是我的模板代码:
<Templates>
<DetailRow>
<asp:Repeater DataSourceID="ConversationsDataSource" runat="server">
<ItemTemplate>
<p>Foobar</p>
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource SelectCommand='SELECT Subject, Message FROM [Fedmekirurgi].[dbo].[MessageSystem.Message] WHERE ConversationID = @ID %>'
runat="server" ID="ConversationsDataSource" ConnectionString="<%$ ConnectionStrings:Fedmekirurgi %>">
<SelectParameters>
<asp:Parameter Name="ID" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<dx:ASPxMemo ID="ASPxMemo1" runat="server" Height="71px" Width="470px">
</dx:ASPxMemo>
</DetailRow>
</Templates>
我的问题是我只是因为我的生活无法将相关的参数注入我的SqlDataSource。基本上,如果我能这样做:
<asp:SqlDataSource SelectCommand='SELECT Subject, Message FROM [Fedmekirurgi].[dbo].[MessageSystem.Message] WHERE ConversationID = <%# Eval("ID") %>'
runat="server" ID="ConversationsDataSource" ConnectionString="<%$ ConnectionStrings:Fedmekirurgi %>">
它可以满足我的需求!
那么,如何将从Eval()获取的数据“注入”到SqlDataSource中呢?
答案 0 :(得分:3)
不确定数据的来源,但您可以选择从QueryString,Cookie,Session,Form,Control,Route和Profile传递SQLDataSource中的参数例如,这是SQLDataSource从QueryString中提取它:< / p>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ChinookConnectionString %>"
SelectCommand="SELECT [CustomerId], [FirstName], [LastName], [Country], [Phone], [Email] FROM [Customer] WHERE ([CustomerId] >= @CustomerId)">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="0" Name="CustomerId"
QueryStringField="custid" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
至于在客户端传递eval值,我不确定是否可行,因为SQLDataSource是服务器控件(即runat = server)并且在为客户端呈现之前绑定了服务器端的数据浏览器。
对于Master-detail,请查看可以帮助您的这些资源:
希望有所帮助,谢谢。