当前位置:编程学习 > C#/ASP.NET >>

DetailsView1激发了未处理的事件 ModeChanging。

<asp:DetailsView ID="DetailsView1" runat="server" BackColor="White" BorderColor="#3366CC" AllowPaging="True" 
            BorderStyle="None" BorderWidth="1px" CellPadding="4" DataKeyNames="发货单ID"
            Height="50px" Width="932px" AutoGenerateRows="False" OnItemInserting="DetailsView1_ItemInserting" OnItemUpdating="DetailsView1_ItemUpdating" OnItemInserted="DetailsView1_ItemInserted" OnItemUpdated="DetailsView1_ItemUpdated">
            <FooterStyle BackColor="#99CCCC" ForeColor="#003399" />
            <EditRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
            <RowStyle BackColor="White" ForeColor="#003399" />
            <PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" />
            <Fields>
                <asp:CommandField ShowEditButton="True" ShowInsertButton="True" />
                <asp:BoundField DataField="发货单ID" HeaderText="发货单ID" InsertVisible="False" ReadOnly="True"  SortExpression="发货单ID" />
                <asp:BoundField DataField="发货单号" HeaderText="发货单号" SortExpression="发货单号" />
                <asp:BoundField DataField="合同号" HeaderText="合同号" SortExpression="合同号" />
                <asp:BoundField DataField="客户名称" HeaderText="客户名称" SortExpression="客户名称" />
                <asp:BoundField DataField="本单发货日期" HeaderText="本单发货日期" SortExpression="本单发货日期" />
                <asp:BoundField DataField="发货目的" HeaderText="发货目的" SortExpression="发货目的" />
                <asp:BoundField DataField="发货申请人员" HeaderText="发货申请人员" SortExpression="发货申请人员" />
                <asp:BoundField DataField="货运公司" HeaderText="货运公司" SortExpression="货运公司" />
                <asp:BoundField DataField="货运单号" HeaderText="货运单号" SortExpression="货运单号" />
                <asp:BoundField DataField="备注" HeaderText="备注" SortExpression="备注" />                
               
            </Fields>
         
            <HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="#CCCCFF" />
        </asp:DetailsView>

CS代码如下

SqlDataAdapter ad = new SqlDataAdapter(strQuery, cn);
        DataSet ds = new DataSet();
       
        ad.Fill(ds,"omers");

        DetailsView1.DataSource = ds;
        DetailsView1.DataBind();

显示数据是正确的,但是一单击,更新或插入,就报错
异常详细信息: System.Web.HttpException: DetailsView“DetailsView1”激发了未处理的事件 ModeChanging。
--------------------编程问答-------------------- UP,简单的问题呀 --------------------编程问答-------------------- 在浏览、编辑、插入模式下切换时触发那个事件,你加上那个事件看有什么提示。 --------------------编程问答-------------------- UP --------------------编程问答-------------------- 你要给更新编辑的事件添加相应的处理逻辑,如不需要就不用更新或插入功能
--------------------编程问答-------------------- 我的问题和你一样啊
DETAILVIEW只有用了DATASOURCE这个控件才能自动生成编辑的代码,如果数据源是我们手动写的,就会发生楼主的情况,到底这个modechanging应该怎么样写,才能和自动生成的"编辑"产生的效果一样? --------------------编程问答-------------------- protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)
    {
    
        DetailsView1.ChangeMode(e.NewMode );
//
/*选择数据源并重新绑定
//
        DetailsView1.DataSource = (new AuthorAccess.AuthorAccess()).GetAuthorByID((string)this.GridView1.SelectedValue);
*/  
      DetailsView1.DataBind();
        DetailsView1.Visible = true;
        
    }

我的方法好用的话别忘记给分哦 --------------------编程问答-------------------- 什么都不做,加上那个事件就可以 --------------------编程问答-------------------- mark --------------------编程问答-------------------- protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)
    {
    
        DetailsView1.ChangeMode(e.NewMode );
 
    } --------------------编程问答-------------------- 那我点了Update 报ItemUpting没激发。 --------------------编程问答--------------------   protected void DetailsView1_ModeChanging(object sender, DetailsViewModeEventArgs e)
    {
        //判断模式
        if (e.NewMode == DetailsViewMode.Insert)
        {
            DetailsView1.ChangeMode(DetailsViewMode.Insert);
        }
        else if (e.NewMode == DetailsViewMode.Edit)
        {
            DetailsView1.ChangeMode(DetailsViewMode.Edit);        
        }
        else if (e.CancelingEdit)
        {
            //取消插入模式
            if (DetailsView1.CurrentMode == DetailsViewMode.Insert)
            {
                DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);            
            }
            //取消编辑模式
            else if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
            {
                DetailsView1.ChangeMode(DetailsViewMode.ReadOnly);            
            }
        }
    }

    protected void DetailsView1_ItemCommand(object sender, DetailsViewCommandEventArgs e)
    {
        //判断单击那个按钮
        if (e.CommandName == "Edit")
        {
            Literal TxtMsg = new Literal();
            TxtMsg.Text = "<script>alert('进入编辑模式')</script>";
            Page.Controls.Add(TxtMsg);
        }
        else if (e.CommandName == "New")
        {
            Literal TxtMsg = new Literal();
            TxtMsg.Text = "<script>alert('插入新的一行')</script>";
            Page.Controls.Add(TxtMsg);
        }
    }




我用了还可以。就是编辑的时候出现两次('进入编辑模式')和取消编辑时没有反应。。。 --------------------编程问答-------------------- 什么问题? --------------------编程问答-------------------- 上面的有些哥还是讲对了的 --------------------编程问答-------------------- 用下面这个,,,


DetailsView1.DataBind();


很强悍,,,我刚试的
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,