2013-01-24 58 views
0

我建立下面這個例子在GridView編輯模式2個級聯dropdownlists但比C#: http://mikepope.com/blog/DisplayBlog.aspx?permalink=1708設置從代碼中的SQL selectparameter落後於gridview_rowdatabound

但我@AttriFk從來沒有得到一個值,我怎麼能在這個事件中設置?

<asp:TemplateField HeaderText="Sub Attribute"> 
    <EditItemTemplate> 
     <asp:DropDownList ID="ddlListSubAttributes" runat="server" AutoPostBack="True" DataSourceID="SqlDataSourceSubAttributes" DataTextField="Title" DataValueField="ID" /> 
     <asp:SqlDataSource ID="SqlDataSourceSubAttributes" runat="server" ConnectionString="Data Source="//empty for this post" ProviderName="System.Data.SqlClient" SelectCommand="SELECT [ID],[Title],[AttriFk] FROM [LocalGTPDatabase].[dbo].[AttributeSubTypes] WHERE ([AttriFk] = @AttriFk)"> 
       <SelectParameters> 
        <asp:Parameter Name="@AttriFk" /> 
       </SelectParameters> 
     </asp:SqlDataSource> 
    </EditItemTemplate> 
    <ItemTemplate> 
     <asp:Label ID="Label66" runat="server" Text='<%# Bind("subAttribute") %>'></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 

這背後是我的代碼的一部分:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
     { 
      if (e.Row.RowState == DataControlRowState.Edit) 
      { 
       System.Data.DataRowView dv = (System.Data.DataRowView)e.Row.DataItem; 

       DropDownList ddlListAttributes = (DropDownList)(e.Row.FindControl("ddlListAttributes")); 
       String nest = Convert.ToString(dv["AttributeFk"]); 
       ddlListAttributes.SelectedValue = nest; 
       //Databind list of taskCode in dependent drop-down list, preselect value 
       DropDownList ddlListSubAttributes = (DropDownList)(e.Row.FindControl("ddlListSubAttributes")); 
       SqlDataSource dsc = (SqlDataSource)(e.Row.FindControl("SqlDataSourceSubAttributes")); 

       String testing = Convert.ToString(dv["AttributeFk"]); 
       //This is not working 
       dsc.SelectParameters["@AttriFk"].DefaultValue = Convert.ToString(dv["AttributeFk"]); 

       //Than I tried this but still it isn't working: 
       dsc.SelectParameters.Add("@AttriFk", Convert.ToString(dv["AttributeFk"])); 

       ddlListSubAttributes.DataBind(); 
       ddlListSubAttributes.SelectedValue = Convert.ToString(dv["SubAttributeFk"]); 
      } 
     } 

回答

2

我敢肯定的@是不是在參數名稱(將其保留在SQL SELECT命令允許雖然

因此改變

<asp:Parameter Name="@AttriFk" /> 

<asp:Parameter Name="AttriFk" /> 
+0

非常感謝你,這確實是錯誤! – Jelle

+0

後續問題如果可能的話:爲什麼這段代碼不能正常工作:if(e.RowState == DataControlRowState.Edit)即使該行處於編輯模式,它也不會始終進入此行? – Jelle