如果我是你,從你所提供的信息,我認爲解決辦法是有一個
<asp:TemplateField />
列與在該
<EditTemplate>
的
將DropDownList本專欄。然後,您需要在GridView某種按鈕的其中有
CommandName="Edit"
這將觸發你用它來識別正在編輯的行的索引和設置在GridView的編輯事件
GridView1.EditIndex = e.NewEditIndex
現在該行內你會有值爲0和1,您還需要在您的EditTemplate有一個按鈕,將更改保存與
CommandName="Update"
你個DropDownList的在RowUpdating被觸發時,處理網格的RowUpdating事件以從DropdownList中查找新值,用這個新數據更新數據庫中的相關行,然後將GridView的EditIndex屬性設置回'-1'以停止編輯該行。然後您想重新綁定GridView中的數據以顯示更改。
一個小例子可能是這樣的:
<asp:TemplateField HeaderText="Edit">
<ItemTemplate>
<asp:Button ID="EditImageButton" runat="server" Text="Edit" CommandName="Edit"' />
</ItemTemplate>
<EditItemTemplate>
<asp:Button ID="UpdateButton" runat="server" ToolTip="Save" CommandName="Update"/>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<% #Eval("Status")%>
</ItemTemplate>
<EditTemplate>
<asp:DropdownList ID="List" runat="server" />
<EdiTemplate>
</asp:TemplateField>
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
GridView1.DataSource = Session["domainData"];
GridView1.DataBind();
}
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
int index = GridView1.EditIndex;
int key = Convert.ToInt32(GridView.DataKeys[index].Value);
GridViewRow row = GridView1.Rows[index];
DropdownList = row.FindControl("List") as DropDownList;
// Save changes to database
// GridView1.EditIndex = -1;
// Rebind grid data
}
當你說'裏面'是什麼意思?在狀態列的EditTemplate裏面? – chead23
項目模板http://postimage.org/image/57losotad/ – user1408956