前台代码:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="AlbumID" BorderWidth="0px" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
<Columns>
<asp:TemplateField HeaderText="专辑名称">
<ItemStyle CssClass="GvStyle_Body_Center" Width="120px" />
<HeaderStyle CssClass="GvStyle_Head" />
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("AlbumID","Manage_Video_OfAlbum.aspx?aid={0}") %>'
Text='<%# Eval("AlbumName") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="专辑描述">
<ItemStyle CssClass="GvStyle_Body_Center" Width="150px" />
<HeaderStyle CssClass="GvStyle_Head" />
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Eval("AlbumDescription") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="创建日期">
<ItemStyle CssClass="GvStyle_Body_Center" Width="70px" />
<HeaderStyle CssClass="GvStyle_Head" />
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Eval("CreatTime") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="更新时间">
<ItemStyle CssClass="GvStyle_Body_Center" Width="70px" />
<HeaderStyle CssClass="GvStyle_Head" />
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Eval("UpdataTime") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="用户名称">
<ItemStyle CssClass="GvStyle_Body_Center" Width="80px" />
<HeaderStyle CssClass="GvStyle_Head" />
<ItemTemplate>
<asp:Label ID="Label5" runat="server" Text='<%# Eval("UserName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CheckBoxField DataField="IsElite" HeaderText="是否推荐">
<ItemStyle CssClass="GvStyle_Body_Center" Width="70px" />
<HeaderStyle CssClass="GvStyle_Head" />
</asp:CheckBoxField>
<asp:CheckBoxField DataField="IsHot" HeaderText="是否热门">
<ItemStyle CssClass="GvStyle_Body_Center" Width="70px" />
<HeaderStyle CssClass="GvStyle_Head" />
</asp:CheckBoxField>
<asp:TemplateField HeaderText="推荐等级">
<ItemStyle CssClass="GvStyle_Body_Center" Width="80px" />
<HeaderStyle CssClass="GvStyle_Head" />
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Stars","{0}级") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Eval("Stars") %>'>
<asp:ListItem Value="0">没有等级</asp:ListItem>
<asp:ListItem Value="1">一级</asp:ListItem>
<asp:ListItem Value="2">二级</asp:ListItem>
<asp:ListItem Value="3">三级</asp:ListItem>
<asp:ListItem Value="4">四级</asp:ListItem>
<asp:ListItem Value="5">五级</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField HeaderText="操作" ShowEditButton="True">
<HeaderStyle CssClass="GvStyle_Head" />
<ItemStyle CssClass="GvStyle_Body_Center" Width="80px" />
</asp:CommandField>
</Columns>
</asp:GridView>
后台代码:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//DropDownList ddl = this.GridView1.Rows[e.RowIndex].FindControl("DropDownList1") as DropDownList;
//string stars = ddl.SelectedItem.Value.ToString();
string stars = ((DropDownList)GridView1.Rows[e.RowIndex].Cells[7].FindControl("DropDownList1")).SelectedItem.Value.ToString(); CheckBox cb1 = this.GridView1.Rows[e.RowIndex].Cells[5].Controls[0] as CheckBox;
CheckBox cb2 = this.GridView1.Rows[e.RowIndex].Cells[6].Controls[0] as CheckBox;
int hot = 0;
int elite = 0;
if (cb1.Checked)
elite = 1;
if (cb2.Checked)
hot = 1;
CM_Video_Album aAlbum = new CM_Video_Album();
aAlbum.IsHot = hot;
aAlbum.IsElite = elite;
aAlbum.Stars = Convert.ToInt32(stars);
aAlbum.AlbumID = Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex].Value.ToString());
cvam.Update_Album(aAlbum);
this.GridView1.EditIndex = -1;
string userName = "";
string albumTime = "";
if (ViewState["UserName"] != null)
{
userName = ViewState["UserName"].ToString();
}
if (ViewState["AlbumName"] != null)
{
albumTime = ViewState["AlbumName"].ToString();
}
BindPage(albumTime, userName);
另外GridView1_RowEditing和GridView1_RowCancelingEdit事件都写了,问题是编辑状态下,DropDownList1和两个CheckBoxField都取不到值,DropDownList1一直是0,CheckBoxField的checked一直false,即使你选中!
真是奇怪啊!以前一直可以的啊!高手帮忙!
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="AlbumID" BorderWidth="0px" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
<Columns>
<asp:TemplateField HeaderText="专辑名称">
<ItemStyle CssClass="GvStyle_Body_Center" Width="120px" />
<HeaderStyle CssClass="GvStyle_Head" />
<ItemTemplate>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Eval("AlbumID","Manage_Video_OfAlbum.aspx?aid={0}") %>'
Text='<%# Eval("AlbumName") %>'></asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="专辑描述">
<ItemStyle CssClass="GvStyle_Body_Center" Width="150px" />
<HeaderStyle CssClass="GvStyle_Head" />
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Eval("AlbumDescription") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="创建日期">
<ItemStyle CssClass="GvStyle_Body_Center" Width="70px" />
<HeaderStyle CssClass="GvStyle_Head" />
<ItemTemplate>
<asp:Label ID="Label3" runat="server" Text='<%# Eval("CreatTime") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="更新时间">
<ItemStyle CssClass="GvStyle_Body_Center" Width="70px" />
<HeaderStyle CssClass="GvStyle_Head" />
<ItemTemplate>
<asp:Label ID="Label4" runat="server" Text='<%# Eval("UpdataTime") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="用户名称">
<ItemStyle CssClass="GvStyle_Body_Center" Width="80px" />
<HeaderStyle CssClass="GvStyle_Head" />
<ItemTemplate>
<asp:Label ID="Label5" runat="server" Text='<%# Eval("UserName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CheckBoxField DataField="IsElite" HeaderText="是否推荐">
<ItemStyle CssClass="GvStyle_Body_Center" Width="70px" />
<HeaderStyle CssClass="GvStyle_Head" />
</asp:CheckBoxField>
<asp:CheckBoxField DataField="IsHot" HeaderText="是否热门">
<ItemStyle CssClass="GvStyle_Body_Center" Width="70px" />
<HeaderStyle CssClass="GvStyle_Head" />
</asp:CheckBoxField>
<asp:TemplateField HeaderText="推荐等级">
<ItemStyle CssClass="GvStyle_Body_Center" Width="80px" />
<HeaderStyle CssClass="GvStyle_Head" />
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("Stars","{0}级") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" SelectedValue='<%# Eval("Stars") %>'>
<asp:ListItem Value="0">没有等级</asp:ListItem>
<asp:ListItem Value="1">一级</asp:ListItem>
<asp:ListItem Value="2">二级</asp:ListItem>
<asp:ListItem Value="3">三级</asp:ListItem>
<asp:ListItem Value="4">四级</asp:ListItem>
<asp:ListItem Value="5">五级</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField HeaderText="操作" ShowEditButton="True">
<HeaderStyle CssClass="GvStyle_Head" />
<ItemStyle CssClass="GvStyle_Body_Center" Width="80px" />
</asp:CommandField>
</Columns>
</asp:GridView>
后台代码:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//DropDownList ddl = this.GridView1.Rows[e.RowIndex].FindControl("DropDownList1") as DropDownList;
//string stars = ddl.SelectedItem.Value.ToString();
string stars = ((DropDownList)GridView1.Rows[e.RowIndex].Cells[7].FindControl("DropDownList1")).SelectedItem.Value.ToString(); CheckBox cb1 = this.GridView1.Rows[e.RowIndex].Cells[5].Controls[0] as CheckBox;
CheckBox cb2 = this.GridView1.Rows[e.RowIndex].Cells[6].Controls[0] as CheckBox;
int hot = 0;
int elite = 0;
if (cb1.Checked)
elite = 1;
if (cb2.Checked)
hot = 1;
CM_Video_Album aAlbum = new CM_Video_Album();
aAlbum.IsHot = hot;
aAlbum.IsElite = elite;
aAlbum.Stars = Convert.ToInt32(stars);
aAlbum.AlbumID = Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex].Value.ToString());
cvam.Update_Album(aAlbum);
this.GridView1.EditIndex = -1;
string userName = "";
string albumTime = "";
if (ViewState["UserName"] != null)
{
userName = ViewState["UserName"].ToString();
}
if (ViewState["AlbumName"] != null)
{
albumTime = ViewState["AlbumName"].ToString();
}
BindPage(albumTime, userName);
另外GridView1_RowEditing和GridView1_RowCancelingEdit事件都写了,问题是编辑状态下,DropDownList1和两个CheckBoxField都取不到值,DropDownList1一直是0,CheckBoxField的checked一直false,即使你选中!
真是奇怪啊!以前一直可以的啊!高手帮忙!
------------
都没有啊!
我也一直怀疑ViewState的问题
{
{
---------------
是的 非常感谢马上揭贴!
这种低级错误!咳!