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"]);
}
}
非常感謝你,這確實是錯誤! – Jelle
後續問題如果可能的話:爲什麼這段代碼不能正常工作:if(e.RowState == DataControlRowState.Edit)即使該行處於編輯模式,它也不會始終進入此行? – Jelle