在edititemtemplate中将数据源绑定到下拉列表会创建数据绑定方法,例如Eval(),XPath()和Bind()错误

时间:2012-05-23 00:41:38

标签: asp.net gridview rowdatabound

我的gridview包含一个名为SubPlot的列。在编辑模式下,此列应显示绑定到数据源的下拉列表。此数据源采用名为@ 100mPlotName的参数。这是我点击“编辑”

时得到的错误
  

数据绑定方法(如Eval(),XPath()和Bind())只能在数据绑定控件的上下文中使用。

ASP.NET:

<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 name="100mPlotName" />
         </asp:SqlDataSource>
     </EditItemTemplate>
          <ItemTemplate>
              <asp:Label ID="Label3" runat="server" Text='<%# Bind("SubPlot") %>'></asp:Label>
     </ItemTemplate>                        
 </asp:TemplateField>

代码背后:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
     if (e.Row.RowType == DataControlRowType.DataRow && (e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit)
     { 
         Label lbl100mPlot = (Label)e.Row.FindControl("lbl100mPlot");
         SqlDataSource dsPlotNames = (SqlDataSource)e.Row.FindControl("dsSubPlotNames");
         dsPlotNames.SelectParameters.Clear();
         dsPlotNames.SelectParameters.Add("100mPlotSiteID", null);
         dsPlotNames.SelectParameters.Add("100mPlotName", lbl100mPlot.Text);               
    }
}

我觉得我在后面的代码中遗漏了一些东西。我的目标是在用户点击编辑时显示包含来自数据源的数据的下拉列表。谢谢你的帮助。

0 个答案:

没有答案