GridView控件將再次自動綁定數據。這使得它返回到開始模式(在GridView中使用Edit按鈕顯示只讀數據)。
否則,你欺騙它下面我的示例代碼...
這是我的GridView與SqlDataSource1結合數據,有DataKey名「代碼」。有三個事件處理可以實現:OnRowEditing,OnSelectedIndexChanged和OnRowCancelingEdit。
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"
DataKeyNames="code"
OnRowEditing="GridView1_RowEditing"
OnSelectedIndexChanged="GridView1_SelectedIndexChanged"
OnRowCancelingEdit="GridView1_RowCancelingEdit">
<Columns>
<asp:BoundField DataField="std_room_id" HeaderText="Room ID" SortExpression="std_room_id" />
<asp:BoundField DataField="booking_name" HeaderText="Name" SortExpression="booking_name" />
<asp:BoundField DataField="course_id" HeaderText="Course" SortExpression="course_id" />
<asp:BoundField DataField="course_period" HeaderText="Period" SortExpression="course_period" />
<asp:BoundField DataField="start_date" HeaderText="Start Date" SortExpression="start_date" />
<asp:BoundField DataField="end_date" HeaderText="End Date" SortExpression="end_date" />
<asp:CheckBoxField DataField="approved" HeaderText="Approved" SortExpression="approved" />
<asp:CommandField ShowSelectButton="true" SelectText="Edit"/>
<asp:CommandField ShowEditButton="true" Visible="false"/>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:MyConnectionString %>"
SelectCommand="SELECT * FROM [BookingRoom]"></asp:SqlDataSource>
</div>
我有兩個CommandFields:SelectButton點擊時,用戶要打開編輯模式,並顯示更新的第二CommandField中和取消按鈕。
這是我的代碼behide
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.Columns[7].Visible = false;
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
string code = GridView1.DataKeys[GridView1.SelectedIndex].Value.ToString();
SqlDataSource1.SelectCommand = "SELECT * FROM [BookingRoom] WHERE code = '" + code + "'";
GridView1.Columns[8].Visible = true;
GridView1.SetEditRow(0);
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.Columns[7].Visible = true;
GridView1.Columns[8].Visible = false;
}
我欺騙了它的表演SelectButton(顯示文本爲「編輯」)中的GridView在啓動模式下,所有加載的數據。當用戶通過單擊SelectButton選擇行時,它將開始執行GridView1_SelectedIndexChanged中的步驟,它們嘗試僅顯示GridView中選定的行,並將編輯模式設置爲收集該行並顯示第二個CommandField(更新和取消按鈕) 。
要設置編輯模式的這一行GridView1.SetEditRow(0);
,它將執行GridView1_RowEditing這一步,它嘗試隱藏SelectButton。
最後,您必須處理canrling編輯模式,如GridView1_RowCancelingEdit,它們嘗試顯示SelectButton,並隱藏Update和Cancel按鈕。
我通過他們的列索引來訪問這兩個CommandFields根據我的GridView列:選擇按鈕的列索引是7和更新的列索引和取消按鈕是8
必須顯示問題相關的代碼 – Shaharyar
添加但沒有比我提到的更多。我相信這是與回發有關的事情,並且在gridview只顯示一條記錄之後,當gridview有多行時,它仍然具有EditIndex值。 –
基本上gridview後只顯示一條記錄editIdex將始終爲0(因爲只有行返回) –