错误:The DetailsView 'DetailsView1' fired event ItemUpdating which wasn't handled. 前台:
<form id="form1" runat="server">
<div>
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" Height="50px" Width="125px" OnItemCommand="DetailsView1_ItemCommand" OnModeChanging="DetailsView1_ModeChanging" OnModeChanged="DetailsView1_ModeChanged" OnDataBound="DetailsView1_DataBound" OnPreRender="DetailsView1_PreRender">
<Fields>
<asp:TemplateField HeaderText="Name">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("name") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("name") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Sex">
<EditItemTemplate>
<asp:DropDownList ID="drpsex" runat="server" DataSource="<%# bindToDrop() %>" DataTextField="sex"></asp:DropDownList>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("sex") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("sex") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblsex" runat="server" Text='<%# Bind("sex") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="False">
<EditItemTemplate>
<asp:Button ID="Button1" runat="server" CausesValidation="True" CommandName="Update"
Text="更新" /> <asp:Button ID="Button2" runat="server" CausesValidation="False"
CommandName="Cancel" Text="取消" />
</EditItemTemplate>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" CausesValidation="False" CommandName="Edit"
Text="编辑" />
</ItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
</div>
</form>
后台:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
bindData();
} } public void bindData()
{
string strSql = ConfigurationManager.AppSettings["ConnectionString"].ToString();
SqlConnection con = new SqlConnection(strSql);
SqlCommand cmd = new SqlCommand("select * from test where id =2",con);
con.Open();
SqlDataReader read = cmd.ExecuteReader();
DetailsView1.DataSource=read;
DetailsView1.DataBind();
DropDownList drpsex = DetailsView1.FindControl("drpsex") as DropDownList;
Label lblsex = DetailsView1.FindControl("lblsex") as Label;
//SqlDataReader reader = bindToDrop();
//drpsex.DataSource = reader;
//drpsex.DataBind();
//drpsex.SelectedIndex = drpsex.Items.IndexOf(drpsex.Items.FindByText(lblsex.Text.Trim())); //lblsex.Text.Trim();
}
protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
{
//if (e.CommandName.Equals("Edit"))//实现一
//{
// DetailsView1.ChangeMode(DetailsViewMode.Edit);
//}
//bindData();
}
protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)
{
//DetailsView1.ChangeMode(DetailsViewMode.Edit);
//bindData();
//实现二
if (DetailsView1.CurrentMode == DetailsViewMode.ReadOnly)
{
DetailsView1.ChangeMode(DetailsViewMode.Edit);
}
else if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
{
DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);
}
bindData();
} public SqlDataReader bindToDrop()
{
string strSql = ConfigurationManager.AppSettings["ConnectionString"].ToString();
SqlConnection con = new SqlConnection(strSql);
SqlCommand cmd = new SqlCommand("select distinct sex from test", con);
con.Open();
SqlDataReader read = cmd.ExecuteReader();
return read;
} protected void DetailsView1_ModeChanged(object sender, EventArgs e)
{
}
protected void DetailsView1_DataBound(object sender, EventArgs e)
{
}
protected void DetailsView1_PreRender(object sender, EventArgs e)
{
//实现dropdownlist 在编辑的时候显示一样的值
if (this.IsPostBack)
{
if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
{
DropDownList drpsex = DetailsView1.FindControl("drpsex") as DropDownList;
Label lblsex = DetailsView1.FindControl("lblsex") as Label;
drpsex.DataSource = bindToDrop();
drpsex.DataBind();
drpsex.SelectedValue = lblsex.Text.Trim();
}
}
}
protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
{ }
}
<form id="form1" runat="server">
<div>
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" Height="50px" Width="125px" OnItemCommand="DetailsView1_ItemCommand" OnModeChanging="DetailsView1_ModeChanging" OnModeChanged="DetailsView1_ModeChanged" OnDataBound="DetailsView1_DataBound" OnPreRender="DetailsView1_PreRender">
<Fields>
<asp:TemplateField HeaderText="Name">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("name") %>'></asp:TextBox>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("name") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("name") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Sex">
<EditItemTemplate>
<asp:DropDownList ID="drpsex" runat="server" DataSource="<%# bindToDrop() %>" DataTextField="sex"></asp:DropDownList>
</EditItemTemplate>
<InsertItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("sex") %>'></asp:TextBox>
</InsertItemTemplate>
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Bind("sex") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblsex" runat="server" Text='<%# Bind("sex") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField ShowHeader="False">
<EditItemTemplate>
<asp:Button ID="Button1" runat="server" CausesValidation="True" CommandName="Update"
Text="更新" /> <asp:Button ID="Button2" runat="server" CausesValidation="False"
CommandName="Cancel" Text="取消" />
</EditItemTemplate>
<ItemTemplate>
<asp:Button ID="Button1" runat="server" CausesValidation="False" CommandName="Edit"
Text="编辑" />
</ItemTemplate>
</asp:TemplateField>
</Fields>
</asp:DetailsView>
</div>
</form>
后台:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
bindData();
} } public void bindData()
{
string strSql = ConfigurationManager.AppSettings["ConnectionString"].ToString();
SqlConnection con = new SqlConnection(strSql);
SqlCommand cmd = new SqlCommand("select * from test where id =2",con);
con.Open();
SqlDataReader read = cmd.ExecuteReader();
DetailsView1.DataSource=read;
DetailsView1.DataBind();
DropDownList drpsex = DetailsView1.FindControl("drpsex") as DropDownList;
Label lblsex = DetailsView1.FindControl("lblsex") as Label;
//SqlDataReader reader = bindToDrop();
//drpsex.DataSource = reader;
//drpsex.DataBind();
//drpsex.SelectedIndex = drpsex.Items.IndexOf(drpsex.Items.FindByText(lblsex.Text.Trim())); //lblsex.Text.Trim();
}
protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
{
//if (e.CommandName.Equals("Edit"))//实现一
//{
// DetailsView1.ChangeMode(DetailsViewMode.Edit);
//}
//bindData();
}
protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)
{
//DetailsView1.ChangeMode(DetailsViewMode.Edit);
//bindData();
//实现二
if (DetailsView1.CurrentMode == DetailsViewMode.ReadOnly)
{
DetailsView1.ChangeMode(DetailsViewMode.Edit);
}
else if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
{
DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);
}
bindData();
} public SqlDataReader bindToDrop()
{
string strSql = ConfigurationManager.AppSettings["ConnectionString"].ToString();
SqlConnection con = new SqlConnection(strSql);
SqlCommand cmd = new SqlCommand("select distinct sex from test", con);
con.Open();
SqlDataReader read = cmd.ExecuteReader();
return read;
} protected void DetailsView1_ModeChanged(object sender, EventArgs e)
{
}
protected void DetailsView1_DataBound(object sender, EventArgs e)
{
}
protected void DetailsView1_PreRender(object sender, EventArgs e)
{
//实现dropdownlist 在编辑的时候显示一样的值
if (this.IsPostBack)
{
if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
{
DropDownList drpsex = DetailsView1.FindControl("drpsex") as DropDownList;
Label lblsex = DetailsView1.FindControl("lblsex") as Label;
drpsex.DataSource = bindToDrop();
drpsex.DataBind();
drpsex.SelectedValue = lblsex.Text.Trim();
}
}
}
protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
{ }
}
/// 在数据绑定后的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void DetailsView1_DataBound(object sender, EventArgs e)
{
if (this.DetailsView1.CurrentMode==DetailsViewMode.Edit)//判断当前的状态如果为编辑状态就执行以下代码
{
Label lb = this.DetailsView1.Rows[5].FindControl("Label3") as Label;//寻找编辑项中的Lable3的控件(其中有本记录的类型编号)
DropDownList ddlpt = this.DetailsView1.Rows[5].FindControl("DropDownList1") as DropDownList;//寻找下拉框控件 ddlpt.DataSource = ptm.Selectall();//绑定数据源Selectall()方法是查询手机类型的数据
ddlpt.DataTextField = "Ptname";//绑定显示值
ddlpt.DataValueField = "Ptid";//绑定实际值
ddlpt.SelectedValue = lb.Text.ToString();//绑定当前显示的值
ddlpt.DataBind();//绑定 }