首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • [向saucer提问]关于用户控件的 [已结贴,结贴人:ljqingas]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ljqingas
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-20 15:11:41 楼主
    网站中老用到GridView,于是就做了一个GridView的用户控件,取消了它的自动列,动态添加绑定列(DataBound):
    用户控件的名称是:UserDataSet.ascx;代码如下:

    public struct MyStruct
    {
        /// <summary>
        /// 绑定列的数据源列名
        /// </summary>
        public string BoundFieldName;
        /// <summary>
        /// 绑定的列名
        /// </summary>
        public string BoundFieldText;
    }
    public partial class UserControl_UserDataSet : System.Web.UI.UserControl
    {
        /// <summary>
        /// GridView的数据源DataSet
        /// </summary>
        public DataSet myDataSet;
        public MyStruct[] myStr = new MyStruct[] { };
        protected void Page_Load(object sender, EventArgs e)
        {
            GridView1.AutoGenerateColumns = false;
            BoundField[] myField = new BoundField[myStr.Length];
            for (int i = 0; i < myStr.Length; i++)
            {
                //添加BoundField所需要的数据;
                myField[i] = new BoundField();
                myField[i].HeaderText = myStr[i].BoundFieldText;
                myField[i].DataField = myStr[i].BoundFieldName;
                GridView1.Columns.Add(myField[i]);
            }
            GridView1.DataSource = myDataSet;
            GridView1.DataBind(); 
        }
    别的引用页面的实现功能是:添加部门名称到数据库,并用GridView显示出来,代码:

    public partial class Admini_AddDepartment : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Bind();
            }
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (TextBox1.Text != "")
            {
                if (Sql.CheckSame("Department", "DepartmentName", TextBox1.Text))
                {
                    Bind();
                    Sql.Warning("部门" + TextBox1.Text + "已经存在");
                }
                else
                {
                    if (Sql.ExecutePro("InsertDepartment", new SqlParameter("@Departname", TextBox1.Text)))
                    {
                        Bind();
                        Sql.Warning("部门" + TextBox1.Text + "添加成功"); 
                    }
                    else
                    {
                        Sql.Warning("部门" + TextBox1.Text + "添加失败");
                    }
                }
            }
            else
            {
                Bind();
                Sql.Warning("请输入部门名称");
            }
        }
        /// <summary>
        /// GridView的数据源的绑定,添加BOUNDFIELD所需要的数据;
        /// </summary>
    这是应用:
        public void Bind()
        {
            MyStruct[] _struct = new MyStruct[2];
            DataSet mySet = new DataSet();
            _struct[0].BoundFieldName = "DepartmentName";
            _struct[0].BoundFieldText = "部门名称";
            _struct[1].BoundFieldName = "ID";
            _struct[1].BoundFieldText = "部门编号";
            Control uc2 = LoadControl("~/UserControl/UserDataSet.ascx");
            ((UserControl_UserDataSet)uc2).myStr = _struct;
            ((UserControl_UserDataSet)uc2).myDataSet = Sql.GetDataSet("select * from Department", mySet);
            Page.Form.Controls.Add(uc2);
        }
    }
    但是点击“确定”按钮添加之后,GridView出来两个,点击按钮就在出来一个GridView,我想是点击按钮就添加一个GridView,这怎么处理呢啊?
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ljqingas
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 15:12:591楼 得分:0
    我在昨天也发问了啊:160分,希望大家能帮我解决下啊,到时把分散给大家啊!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ojekleen
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 15:22:312楼 得分:40
    Page.Form.Controls.Add(uc2);
    你点一下就bind一次,当然他要添加了解.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ljqingas
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 15:30:263楼 得分:0
    哪有什么方法实现只添加一次啊?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ljqingas
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 16:22:074楼 得分:0
    还是自己顶一下吧!!!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lovehongyun
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 10:32:055楼 得分:30
    你按钮里的Bind()全去掉
    把if (!IsPostBack) 也去掉

    让他每次页面加载时add
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhangxuyu1118
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 10:49:206楼 得分:30
    在页面加载时add,
    不能:Page.Form.Controls.Add(uc2);
    你点一下就bind一次
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved