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

急!!!! ASP.NET 控件获取不到值 求各位大神帮忙 我要拿去面试的作品

后台界面:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

public partial class Manage_IndroduceManage : System.Web.UI.Page
{
    BLL.BLLSelect SelCon = new BLL.BLLSelect();
    BLL.BLLUpdate update = new BLL.BLLUpdate();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack) 
        {
            SqlDataReader dr = SelCon.BLLSelectIndroduce();
            while (dr.Read())
            {
                string content = dr["Content"].ToString();
                ItmouseEditor1.Text = content;
            }
        }
            
            
    }
    protected void ItmouseEditor1_Submit(object sender, itmouse.com.cn.ItmouseEditor.SubmitEventArgs e)
    {
        string pid = Request["ID"].ToString();
        string TextContent = e.Text;
        bool en = update.BLLUpdateIndroduce(TextContent);
        if (en == true)
        {
            Response.Redirect("IndexManage.aspx?id=" + pid);
        }
        else
        {
            Response.Redirect("IndexManage.aspx?id=" + pid);
        }
    }

}
前台界面:
<%@ Page Title="" Language="C#" MasterPageFile="~/Manage/MasterPage.master" AutoEventWireup="true" CodeFile="IndroduceManage.aspx.cs" Inherits="Manage_IndroduceManage" %>

<%@ Register assembly="Refresh.Web.FreeTextBox" namespace="Refresh.Web" tagprefix="FTB" %>
<%@ Register assembly="ItmouseEditor" namespace="itmouse.com.cn" tagprefix="cc1" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    <cc1:ItmouseEditor ID="ItmouseEditor1" runat="server" 
        onsubmit="ItmouseEditor1_Submit" >
    </cc1:ItmouseEditor>
    </asp:Content>
BLL层BLLUpdate:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace BLL
{
    public class BLLUpdate
    {
        DAL.DALUpdate dal = new DAL.DALUpdate();
        public bool BLLUpdateIndroduce(string Content) 
        {
            return dal.UpdateIndroduce(Content);
        }
    }
}
DAL层DALUpdate:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace DAL
{
    public class DALUpdate
    {
        DBbase db = new DBbase();
        public bool UpdateIndroduce(string Content) 
        {
            return db.ReturnExecuteNonQuery(Content);
        }
    }
}
DAL层DBbase.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace DAL
{
    class DBbase
    {
        #region 实例化连接对象con
        /// <summary>
        /// 实例化连接对象con
        /// </summary>
        SqlConnection con = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConSql"]);
        #endregion

        #region 检测连接是否打开
        /// <summary>
        /// 检测连接的方法CheckConnection(),若连接是关闭的则打开SqlConnection连接
        /// </summary>
        public void CheckConnection()
        {
            if (this.con.State == ConnectionState.Closed)
            {
                this.con.Open();
            }
        }
        #endregion
   public bool ReturnExecuteNonQuery(string Content)
        {
            CheckConnection();
            try
            {
                string sqlstr = "update tb_Indroduce set Content='" + Content + "' where ID=3";
                SqlCommand com = new SqlCommand(sqlstr, con);
                int i = com.ExecuteNonQuery();
                if (i > 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            finally
            {
                con.Close();
            }
        }
附录 ItmouseEditor控件属事及事件:

属性:
EditMode:编辑器模式,默认为Design (Design-编辑模式 Html-代码模式)
EditingAreaWidth:编辑区宽度,默认为600px
EditingAreaHeight:编辑区高度,默认为300px
Text:编辑内容
DisableFileUpload:是否关闭文件上传功能,默认为false(true-关闭文件上传功能 false-不关闭文件上传功能)
ImageFileType:图片文件上传类型列表,格式见属性说明
FileType:普通文件上传类型列表,格式见属性说明
ImageFileSavePath:图片文件上传目录,格式见属性说明
FileSavePath:普通文件上传目录,格式见属性说明
EditorStyle:编辑器外观样式选择,目前只实现了officeXP样式

事件:
Submit:点击控件中的保存按钮时的触发的事件
事件方法中的e中可以取到控件编辑的内容



下面是问题
上面的Page_Load传值上面的都好使
但是运行下面的Submit时 加上 if (!IsPostBack){}得到的ItmouseEditor.Text就是空
                       不加上if (!IsPostBack){}得到的是原值
哪位大神能帮帮我啊 我真的很急 后天就要去面试了。。。 --------------------编程问答-------------------- 这个是自定义控件里面的方法? --------------------编程问答-------------------- 嗯 是的 一个叫ItmouseEditor 1.0版本的文本编辑器 --------------------编程问答-------------------- 用 request.Params 试试 --------------------编程问答-------------------- 我是新手 您能具体的说一下麽   --------------------编程问答-------------------- 擦,页面button事件内肯定是postback的啊,否则谁会调用它 --------------------编程问答--------------------
引用 3 楼 hch126163 的回复:
用 request.Params 试试

我是新手 您能具体的说一下麽   --------------------编程问答--------------------
引用 5 楼 TheDolphin 的回复:
擦,页面button事件内肯定是postback的啊,否则谁会调用它

您具体是指这样?
protected void ItmouseEditor1_Submit(object sender, itmouse.com.cn.ItmouseEditor.SubmitEventArgs e)
    {
        if (IsPostBack) 
        {
            string pid = Request["ID"].ToString();
            string TextContent = Request.Params["TextValue"];
            //string TextContent = e.Text;
            bool en = update.BLLUpdateIndroduce(TextContent);
            if (en == true)
            {
                Response.Redirect("IndexManage.aspx?id=" + pid);
            }
            else
            {
                Response.Redirect("IndexManage.aspx?id=" + pid);
            }
        }
        
    }
结果还是修改的空值
您要是指的是这样protected void ItmouseEditor1_Submit(object sender, itmouse.com.cn.ItmouseEditor.SubmitEventArgs e)
    {
        if (!IsPostBack) 
        {
            string pid = Request["ID"].ToString();
            string TextContent = Request.Params["TextValue"];
            //string TextContent = e.Text;
            bool en = update.BLLUpdateIndroduce(TextContent);
            if (en == true)
            {
                Response.Redirect("IndexManage.aspx?id=" + pid);
            }
            else
            {
                Response.Redirect("IndexManage.aspx?id=" + pid);
            }
        }
        
    }
不跳转页面
您能具体点指出来么 我是新手 --------------------编程问答-------------------- 跪求 解答啊   长时间在线  急!!!!!!!!!!!!!!!!!!! --------------------编程问答-------------------- 一,建议楼主断点调试,看看就明白了
儿,button事件肯定是页面postback才会发生,所以你
   if (!IsPostBack) 写在button里永远是false,不会执行 --------------------编程问答-------------------- 来,我帮你远程调试一下 --------------------编程问答--------------------
引用 10 楼 UnOpenMyCode 的回复:
来,我帮你远程调试一下

好啊 加我QQ737171500 --------------------编程问答-------------------- 你的 SqlDataReader 都没有 关闭。

你那代码写的太烂了,


第一次见在 page_load里写 读取 SqlDataReader 的代码。 --------------------编程问答--------------------  string pid = Request["ID"].ToString();
不能用这个,

你要用这个 Request.QareyString[]


自己去区别GET,POST 的区别。 --------------------编程问答--------------------
引用 12 楼 qiaohuyue 的回复:
你的 SqlDataReader 都没有 关闭。

你那代码写的太烂了,


第一次见在 page_load里写 读取 SqlDataReader 的代码。

我刚学没多久 也不会什么规范 您就先别纠结这个了  帮我看看哪里出问题了 我急用啊 --------------------编程问答--------------------
引用 13 楼 qiaohuyue 的回复:
string pid = Request["ID"].ToString();
不能用这个,

你要用这个 Request.QareyString[]


自己去区别GET,POST 的区别。

哦 我去试试 谢谢 --------------------编程问答--------------------
引用 13 楼 qiaohuyue 的回复:
string pid = Request["ID"].ToString();
不能用这个,

你要用这个 Request.QareyString[]


自己去区别GET,POST 的区别。


没感觉有啥区别,我一直直接request["xx"] --------------------编程问答-------------------- 你的 if (!IsPostBack) 是加在哪里的时候取不到值?  不管是页面初始化加载还是submit的时候加载  都是先执行Page_Load,只是在Page_Load里判断,是不是postback.

你不是想在submit事件里加上 if (!IsPostBack)吧,这里是肯定不需要的.  你要取文本编辑器ItmouseEditor里的值用ItmouseEditor.Text可以取到吧. --------------------编程问答--------------------
引用 17 楼 C____1988 的回复:
你的 if (!IsPostBack) 是加在哪里的时候取不到值?  不管是页面初始化加载还是submit的时候加载  都是先执行Page_Load,只是在Page_Load里判断,是不是postback.

你不是想在submit事件里加上 if (!IsPostBack)吧,这里是肯定不需要的.  你要取文本编辑器ItmouseEditor里的值用ItmouseE……

当然是加在Page_Load里 会取到数据的值 但是只要触发了ItmouseEditor1_Submit点击事件 传回的
ItmouseEditor.text就是空值
要是Page_Load里面不加if(!IsPostBack) 触发了ItmouseEditor1_Submit点击事件 传回的
ItmouseEditor.text就是修改之前 的 --------------------编程问答-------------------- 你的意思是:在 Page_Load 里给 ItmouseEditor 赋值(进行修改之类的操作)然后以 ItmouseEditor 的新内容修改数据库记录,根据返回值实现页面跳转。
但是这里你用了 MasterPage ,内容页跟母版页之间存在交互行为,在 (!IsPostBack)里赋值了,但当你执行 ItmouseEditor1_Submit 时页面已经 PostBack 而且不执行(!IsPostBack)里的内容,也就是说 ItmouseEditor 中的内容被清空了。。。
你可以试一下用 ViewState --------------------编程问答-------------------- 真不知道你到底要做什么, 


2个页面传值有这么费劲吗 

楼主最好把你的问题描述清楚。到目前为止,你的问题已经被说乱了。 --------------------编程问答--------------------
引用 19 楼 lin11211408 的回复:
你的意思是:在 Page_Load 里给 ItmouseEditor 赋值(进行修改之类的操作)然后以 ItmouseEditor 的新内容修改数据库记录,根据返回值实现页面跳转。
但是这里你用了 MasterPage ,内容页跟母版页之间存在交互行为,在 (!IsPostBack)里赋值了,但当你执行 ItmouseEditor1_Submit 时页面已经 PostBack 而且不执行(!Is……



她是要在一个页面里做操作不是2个页面吗,一个页面你什么url传参数啊。真无语了

1.js __dopostback事件或是回调。
2.直接ViewState[""](当前页面作用域) 或是 Session[""](一个会话都可以读到) --------------------编程问答-------------------- 现在的问题跟页面传值无关,是楼主没弄清PostBcak的问题 --------------------编程问答-------------------- postback就是页面首次加载时运行的代码。

话说你最起码得有个数据访问层啊。 --------------------编程问答--------------------
把楼主说蒙了吧 --------------------编程问答-------------------- 打断点调试嘛~ --------------------编程问答-------------------- 来看看学习一下了。。。。。。。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,