Code
protected void SmartGridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "EEdit")
{
string roomid = e.CommandArgument.ToString().Trim();
GridViewRow row = ((Button)e.CommandSource).Parent.Parent as GridViewRow;//获得双击的那一行,这是关键部分
string zc = ((Label)row.Cells[2].FindControl("Label2")).Text.Trim();
string xq = ((Label)row.Cells[3].FindControl("Label3")).Text.Trim();
lblRoomID.Text = roomid;
lblWeek.Text = zc;
lblDay.Text = xq;
ddl1.SelectedValue = ((Label)row.Cells[4].FindControl("Label4")).Text.Trim();
ddl2.SelectedValue = ((Label)row.Cells[5].FindControl("Label5")).Text.Trim();
ddl3.SelectedValue = ((Label)row.Cells[6].FindControl("Label6")).Text.Trim();
ddl4.SelectedValue = ((Label)row.Cells[7].FindControl("lblIs1")).Text.Trim();
ddl5.SelectedValue = ((Label)row.Cells[8].FindControl("Label7")).Text.Trim();
Panel1.Visible = false;
Panel2.Visible = true;
}
} 对于非模板列的内容的获取方法:
Code
<asp:GridView ID="GV" runat="server" Width="680px" AutoGenerateColumns="False"
onrowcommand="GV_RowCommand" onrowdeleting="GV_RowDeleting">
<Columns>
<asp:BoundField DataField="Id" HeaderText="项目ID" />
<asp:TemplateField HeaderText="项目名称">
<ItemTemplate>
<asp:TextBox ID="txtProname" runat="server" Width="85" Text='<%# Eval("Pj_name") %>' Enabled="false"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="数据库名">
<ItemTemplate>
<asp:TextBox ID="txtDbname" runat="server" Width="85" Text='<%# Eval("dbname") %>' Enabled="false"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="开始时间">
<ItemTemplate>
<cc1:WebCalendar ID="StartTime" runat="server" Width="85" Text='<%# Eval("StartTime") %>' Enabled="false"></cc1:WebCalendar>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="结束时间">
<ItemTemplate>
<cc1:WebCalendar ID="EndTime" runat="server" Width="85" Text='<%# Eval("EndTime") %>'></cc1:WebCalendar>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="备份时间">
<ItemTemplate>
<cc1:WebCalendar ID="BackUpTime" runat="server" Width="85" Text='<%# Eval("BackUpTime") %>'></cc1:WebCalendar>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="状态">
<ItemTemplate>
<asp:DropDownList ID="Status" runat="server">
<asp:ListItem Value="2">进行中</asp:ListItem>
<asp:ListItem Value="3">已结束</asp:ListItem>
<asp:ListItem Value="4">已备份</asp:ListItem>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:ButtonField ButtonType="Button" CommandName="RowUpdate" Text="更新" HeaderText="操作" />
</Columns>
</asp:GridView> 获取最后一列非模板列的行索引,单击最后一列按钮列的处理函数如下:
protected void GV_RowCommand(object sender, GridViewCommandEventArgs e)
{
//该句是关键,获取行索引
int index = Convert.ToInt32(e.CommandArgument);
switch (e.CommandName)
{
case "RowUpdate":
string sql = "Update ep_table Set Pj_name = '" + ((TextBox)(GV.Rows[index].FindControl("txtProname"))).Text.Trim()
+ "',Dbname = '" + ((TextBox)(GV.Rows[index].FindControl("txtDbname"))).Text.Trim()
+ "',StartTime ='" + ((WebCalendar)(GV.Rows[index].FindControl("StartTime"))).Text.Trim()
+ "',EndTime ='" + ((WebCalendar)(GV.Rows[index].FindControl("EndTime"))).Text.Trim()
+ "',BackUpTime = '" + ((WebCalendar)(GV.Rows[index].FindControl("BackUpTime"))).Text.Trim()
+ "',Flag = '" + ((DropDownList)(GV.Rows[index].FindControl("Status"))).SelectedValue + "' Where Id ='" + GV.Rows[index].Cells[0].Text.Trim() + "'";
DB.ExecuteSQL(sql);
sql = "Update MultiProject Set Description ='" + ((TextBox)(GV.Rows[index].FindControl("txtProname"))).Text.Trim() + "' Where Dbname = '" + ((TextBox)(GV.Rows[index].FindControl("txtDbname"))).Text.Trim() + "'";
SqlConnection con = DB.CreateConnectionToElite();
DB.ExecuteSQL(sql, con);
Function.RemoveGVRows(GV);
ShowGridView();
Response.Write("<Script language='JavaScript'>alert('更新成功!')</Script>");
break;
}
}