【发布时间】:2009-12-03 13:37:46
【问题描述】:
我有一个 GridView,可以从数据库中呈现书籍。
在每一行中都会呈现一个删除/编辑按钮。当用户单击“编辑”按钮时,我希望“取消”和“更新”按钮出现,并且“编辑”按钮被禁用。
我考虑过使用 Edit 按钮的 onClick 事件以及 GridView 行来根据行获取适当的按钮,将 Edit 按钮的 Enable 属性设置为 false 并将 Cancel 和 Update 按钮的可见性设置为 true。
但是,即使是从事件处理程序获得的“编辑”按钮,我似乎也无法更改属性。
这里是代码。
protected void EditButton_Click(object sender, EventArgs e)
{
Button Sender = (Button)sender;
Sender.Text = "??"; //THIS CHANGE IS NOT APPLIED!!
//Button Sender = (Button)sender;
//GridViewRow grdRow = (GridViewRow)Sender.Parent.Parent;
//Button btn = (Button)grdBooks.Rows[grdRow.RowIndex].Cells[1].FindControl("CancelButton");
}
<asp:GridView
id="grdBooks"
DataSourceID="srcBooks"
DataKeyNames="Product_ID"
AutoGenerateColumns="false"
CssClass="products"
GridLines="none"
Runat="server" OnRowCreated="grdBooks_RowCreated">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button CausesValidation="false" ID="DeleteButton" CommandName="Delete" runat="server" Text="Delete" />
<asp:Button CausesValidation="false" ID="EditButton" CommandName="Edit" runat="server" Text="Edit" OnClick="EditButton_Click" />
<asp:Button CausesValidation="false" ID="CancelButton" Enabled="false" Visible="true" CommandName="Cancel" runat="server" Text="Cancel" />
<asp:Button CausesValidation="false" ID="UpdateButton" Enabled="false" Visible="true" CommandName="Update" runat="server" Text="Update" />
</ItemTemplate>
</asp:TemplateField>
<%-- <asp:CommandField ButtonType="Button" ShowEditButton="true"/>--%>
<asp:BoundField
DataField="ISBN"
ReadOnly="true"
HeaderText="ISBN" />
<asp:BoundField
DataField="Title"
ReadOnly="true"
HeaderText="Title" />
<asp:BoundField
DataField="First_Name"
ReadOnly="true"
HeaderText="First Name" />
<asp:BoundField
DataField="Last_Name"
ReadOnly="true"
HeaderText="Last Name" />
<asp:BoundField
DataField="Price"
HeaderText="Price" />
<asp:BoundField
DataField="Quantity"
HeaderText="Quantity" />
</Columns>
</asp:GridView>
【问题讨论】: