我有一個GridView控件,我想要有2個可見字段,一個標籤和一個下拉列表。我沒有使用RowEditTemplate,而是希望將ItemTemplate定義爲下拉值。從GridView上更新下拉列表更改
關於下拉改變的事件,我想執行一些代碼,我可以得到該gridview行的整數鍵,以及下拉的新選定值。像下面這樣:
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
DataKeyNames="pk_id" onrowdeleting="GridView2_RowDeleting"
onrowcommand="GridView2_RowCommand">
<Columns>
<asp:BoundField DataField="pk_id" Visible="False" />
<asp:BoundField DataField="Column1" HeaderText="Column1" />
<asp:TemplateField HeaderText="Column2">
<ItemTemplate>
<asp:DropDownList ID="DropDownList3" runat="server"
DataSourceID="SqlDataSource" DataTextField="name"
DataValueField="id2"
SelectedValue='<%# Bind("id2") %>'
AutoPostBack="True">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:Main %>"
SelectCommand="get_TestData" SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
後面的代碼
protected void Page_Load(object sender, EventArgs e)
{
...
GridView2.DataSource = new Person(id).GetDataSet();
GridView2.DataBind();
}
protected void GridView2_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
// Call delete function with the key
// Delete(key);
}
protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{
// figure out which row sent it
// UpdateRecord(key, newvalue)
}
下拉填充和價值選擇的正確,但我不能讓下拉菜單刪除或更新才能正常工作。我嘗試過實現這些功能,但當下拉菜單觸發回發時,RowCommand似乎不會觸發。即使它確實觸發,我不知道如何獲得我需要的值。有更好的方法我應該去做這件事嗎?
棘手。 ViewState是否爲頁面啓用? – 2009-09-12 03:22:51
Yeah ViewState已啓用。 – 2009-09-12 17:41:08