asp:GridView自带的编辑和删除
页面部分:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" OnRowCommand="GridView1_RowCommand">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:TemplateField HeaderText="OID" Visible="False">
<ItemTemplate>
<asp:Label ID="labOID" runat="server" Text='<%# Bind("OID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="QID" HeaderText="QID" Visible="False" />
<asp:TemplateField HeaderText="字母">
<EditItemTemplate>
<asp:DropDownList ID="ddLetters" runat="server">
<asp:ListItem Value="A">A</asp:ListItem>
<asp:ListItem Value="B">B</asp:ListItem>
<asp:ListItem Value="C">C</asp:ListItem>
<asp:ListItem Value="D">D</asp:ListItem>
<asp:ListItem Value="E">E</asp:ListItem>
<asp:ListItem Value="F">F</asp:ListItem>
<asp:ListItem Value="G">G</asp:ListItem>
<asp:ListItem Value="H">H</asp:ListItem>
<asp:ListItem Value="I">I</asp:ListItem>
<asp:ListItem Value="J">J</asp:ListItem>
<asp:ListItem Value="K">K</asp:ListItem>
<asp:ListItem Value="L">L</asp:ListItem>
</asp:DropDownList>
<asp:HiddenField ID="hidLetters" runat="server" Value='<%# Eval("Letters")%>' />
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="labLetters" runat="server" Text='<%# Bind("Letters") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="选项">
<EditItemTemplate>
<asp:TextBox ID="txtOptions" runat="server" Text='<%# Bind("Options") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="labOptions" runat="server" Text='<%# Bind("Options") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" HeaderText="操作" />
<asp:TemplateField ShowHeader="False">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Delete" ForeColor="Red"
Text="删除" OnClientClick="return confirm('确定删除?')" CommandArgument='<%#Eval("OID") %>'></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
代码部分:
//准备编辑
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
this.GridView1.EditIndex = e.NewEditIndex;
Bind();
HiddenField hidLetters = (HiddenField)GridView1.Rows[e.NewEditIndex].FindControl("hidLetters");
DropDownList ddLetters = (DropDownList)GridView1.Rows[e.NewEditIndex].FindControl("ddLetters");
ddLetters.SelectedValue = hidLetters.Value;
}
//取消编辑
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
this.GridView1.EditIndex = -1;
Bind();
}
//执行编辑
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string oid = ((Label)GridView1.Rows[e.RowIndex].FindControl("labOID")).Text.Trim();//OID
string Options = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("txtOptions")).Text.Trim();
string sql = "UPDATE [t_Options] SET [Options]='" + Options + "' WHERE [OID]=" + oid;
int i = TempRecordDB.ExecuteNonQuery(sql);
if (i > 0)
{
this.GridView1.EditIndex = -1;
Bind();
}
else
{
MessageBox.WebMessageBox(this.Page, "编辑[选项]失败!请稍后再试!");
}
}
//删除
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Delete")
{
string oid = e.CommandArgument.ToString();//OID
string sql = "DELETE FROM [t_Options] WHERE [OID]=" + oid;
int i = TempRecordDB.ExecuteNonQuery(sql);
if (i > 0)
{
BindAll();
}
else
{
MessageBox.WebMessageBox(this.Page, "删除[选项]失败!请稍后再试!");
}
}
}
//删除
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
//....nothing to do....
}