Deaktivieren Sie die Schaltfläche "Bearbeiten" auf alle Zeilen Bearbeiten, wenn die Schaltfläche geklickt wird, auf eine bestimmte Zeile in der GridView
Ich habe ein gridView mit 5 Spalten mit Bearbeiten-und Löschen-button in jeder Zeile des GridView-Steuerelements. Einmal die Bearbeiten-Schaltfläche eine bestimmte Zeile angeklickt wird , möchte ich deaktivieren Sie die Schaltflächen Bearbeiten und löschen auf die restlichen Zeilen.
Unten ist meine aspx -
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" ShowFooter="True" EnableModelValidation="True" onrowdatabound="GridView1_RowDataBound" onrowcommand="GridView1_RowCommand" onrowdeleting="GridView1_RowDeleting" EditRowStyle-ForeColor="Aqua" onrowediting="GridView1_RowEditing" >
<asp:TemplateField HeaderText="Item#" >
<ItemTemplate>
<asp:Label ID="Item#" runat="server" Text='Label' ></asp:Label>
</ItemTemplate>
</asp:TemplateField>
..........
<asp:TemplateField >
<ItemTemplate>
<asp:Button ID="btnEdit" runat="server" CausesValidation ="false" Font-Size="Smaller" CommandName="Edit" Text="Edit" CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' Width="35px"/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField >
<ItemTemplate>
<asp:Button ID="btnDelete" runat="server" CssClass="GridButton" CausesValidation="False" CommandName="Delete" Font-Size="Smaller" Text="Delete" CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
int x = Convert.ToInt32(e.CommandArgument.ToString());
txtLineItemNumber.Text = (x + 1).ToString();
}
else
{
int x = Convert.ToInt32(e.CommandArgument.ToString());
foreach (GridViewRow row in GridView1.Rows)
{
if (row.RowIndex != x)
{
Button editButton = (Button)row.FindControl("btnEdit");
editButton.Enabled = false;
Button deleteButton = (Button)row.FindControl("btnDelete");
deleteButton.Enabled = false;
}
else
{
Button deleteButton = (Button)row.FindControl("btnDelete");
deleteButton.Text = "Cancel";
e.CommandName = "Cancel"; --- This is not possible...what should I do so that the Command Name is changed to Cancel and it does the cancel operation.
}
} }
}
Bitte helfen Sie mir, es funktioniert.....
InformationsquelleAutor Janet | 2011-09-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Ansatz, den Sie nehmen, die wird funktionieren. Aber das CommandArgument, die in Ihrem markup
CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>'
ist kein Verweis auf den-Button verwenden, sondern den index des GridView-Zeile, die Schaltfläche befindet.Müssen Sie zum abrufen der index von der CommandArgument in der RowCommand Ereignis und dann aktivieren/deaktivieren aller Schaltflächen auf anderen Zeilen etwa so:
Bearbeiten (basierend auf Kommentar)
Versuchen Sie, den code, ändert die Schaltfläche löschen, um die RowEditing event-handler wie folgt:
Hoffe, das hilft.
InformationsquelleAutor jdavies
Könntest du javascript verwenden, hier beschriebenen, http://www.krissteele.net/blogdetails.aspx?id=92 . Fügen Sie Logik, um nicht zu deaktivieren, für die aktuelle Zeile.
InformationsquelleAutor Luke Hutton