dam*_*dam 1 c# asp.net gridview drop-down-menu
我有一个包含许多列的可编辑网格视图.其中两个是100mPlot和SubPlot.SubPlot不是唯一的(1A,1B,1C和1D),但100mPlot + SubPlot是一组唯一的值.
当用户单击"编辑"时,他们将在SubPlot列中看到下拉列表.此列表需要基于100mPlot的值.因此,为了显示SubPlot的正确值,我需要将100mPlot列中的值作为参数传递给将绑定到SubPlot下拉列表的sqldatasource.我该怎么做?
<asp:BoundField DataField="100mPlot" HeaderText="100m plot"
SortExpression="100mPlot" ReadOnly="True" />
<asp:TemplateField HeaderText="SubPlot" SortExpression="SubPlot">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="dsSubPlotNames"
DataTextField="SiteID" DataValueField="SiteID"
SelectedValue='<%# Bind("SiteID") %>'
AppendDataBoundItems="True">
<asp:ListItem Value=""></asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="dsSubPlotNames" runat="server"
ConnectionString="<%$ ConnectionStrings:WERCMTX %>" SelectCommand="exec [339_PPM].usp_SubPlotNames_Select @100mPlotSiteID;">
<SelectParameters>
<asp:Parameter Name="100mPlotSiteID" />
</SelectParameters>
</asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Bind("SubPlot")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
如您所见,参数名称"100mPlotSiteID"需要从100mPlot列中获取.我不知道如何更清楚地描述这一点,如果您有任何问题,请告诉我.谢谢你的帮助.
编辑新修改的代码.太近了!
<asp:TemplateField HeaderText="SubPlot" SortExpression="SubPlot">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="dsSubPlotNames"
DataTextField="SiteName" DataValueField="SiteID"
SelectedValue='<%# Bind("SiteID") %>'
>
</asp:DropDownList>
<asp:SqlDataSource ID="dsSubPlotNames" runat="server"
ConnectionString="<%$ ConnectionStrings:WERCMTX %>" SelectCommand='exec [339_PPM].usp_SubPlotNames_Select null, @100mPlotName;'
CancelSelectOnNullParameter="False">
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" DefaultValue='<%# Eval("100mPlot") '
Name="100mPlotName" PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Bind("SubPlot") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
不幸的是,我用Eval("100mPlot")得到了这个错误:
仅在具有DataBinding事件的对象上支持数据绑定表达式.System.Web.UI.WebControls.ControlParameter没有DataBinding事件.
您需要放置标签并将text属性设置为'<%# Eval("100mPlot") %>'并在数据源中使用控制参数.
如果标签的id是"label1"(必须在编辑项目模板中),那么使用它
<asp:ControlParameter ControlID="label1" PropertyName="Text" Name="100mPlotSiteID" />
Run Code Online (Sandbox Code Playgroud)