找回密码
 立即注册

QQ登录

只需一步,快速开始

vbagcl

初级会员

24

主题

100

帖子

210

积分

初级会员

积分
210

活字格认证微信认证勋章

vbagcl
初级会员   /  发表于:2011-8-17 14:50  /   查看:8734  /  回复:8
各位前辈,我刚开始使用C1控件,想实现动态生成C1DateInput、C1Calendar,然后关联,实现输入日期的功能,我的代码如下:
C1.Web.UI.Controls.C1Input.C1DateInput num_input = new C1.Web.UI.Controls.C1Input.C1DateInput();
            C1.Web.UI.Controls.C1Calendar.C1Calendar mycal = new C1.Web.UI.Controls.C1Calendar.C1Calendar();
            
            num_input.Width = twidth;
            num_input.Height = tHeight;
            num_input.ID = tID;
            num_input.WebCalendar = "mycal";
结果,C1DateInput、C1Calendar都出现在画面上,并不能实现输入日期的功能。
我点击C1Calendar,在C1DateInput不会显示点击的日期。
我想实现的功能是,点击C1DateInput,在C1DateInput下面显示C1Calendar,选择日期后在C1DateInput显示选择的日期,焦点离开C1DateInput后,C1Calendar消失。
不知道如何动态实现,多谢!

8 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-17 15:19:00
沙发

回复 1# vbagcl 的帖子

C1只带的例子中有一个例子,你可以参考:C1例子->C1Input->CalendarIntegration.:

  1.     <cc1:C1DateInput ID="C1DateInput1" runat="server" CustomButtonAlign="Right" UpDownAlign="None"
  2.         WebCalendar="C1WebCalendar1" WebCalendarPopupPosition="Below" Date="2009-03-10">
  3.     </cc1:C1DateInput>
  4.     &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;
  5.     <cc1:C1DateInput ID="C1DateInput2" runat="server" CustomButtonAlign="Right" Date="2009-03-18"
  6.         WebCalendar="C1WebCalendar1" Width="155px"></cc1:C1DateInput>
  7.     <br />
  8.     <cc2:C1Calendar ID="C1WebCalendar1" runat="server" Height="160px" PopupMode="true"
  9.         SelectedDate="2007-02-22" Width="200px" CultureInfo="English (Canada)">
  10.     </cc2:C1Calendar>
复制代码
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-17 15:32:00
板凳

回复 1# vbagcl 的帖子

直接使用后台代码实现:
  1.         protected void Page_Load(object sender, EventArgs e)
  2.         {
  3.             C1.Web.UI.Controls.C1Calendar.C1Calendar calendar1 = new C1.Web.UI.Controls.C1Calendar.C1Calendar();
  4.             calendar1.Width = 200;
  5.             calendar1.ID = &quot;calendar1&quot;;
  6.             calendar1.PopupMode = true;

  7.             C1.Web.UI.Controls.C1Input.C1DateInput date1 = new C1.Web.UI.Controls.C1Input.C1DateInput();
  8.             date1.ID = &quot;date1&quot;;
  9.             date1.Width = 200;
  10.             date1.CustomButtonAlign = C1.Web.UI.Controls.C1Input.ButtonsDisplayPosition.Right;
  11.             date1.UpDownAlign = C1.Web.UI.Controls.C1Input.ButtonsDisplayPosition.None;
  12.             date1.WebCalendar = &quot;calendar1&quot;;
  13.             date1.CalendarPopupPosition = C1.Web.UI.Controls.C1Input.CalendarPopupPositionEnum.Below;

  14.             this.form1.Controls.Add(calendar1);
  15.             this.form1.Controls.Add(date1);
  16.         }
复制代码
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-17 15:35:00
地板
回复 使用道具 举报
vbagcl
初级会员   /  发表于:2011-8-17 16:30:00
5#
谢谢指点!
我试过上面的代码,在form1中加载好使,不过我在Panel中加载不好使,难道C1Calendar 只能用于form1中吗?
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-17 17:18:00
6#
这是我的测试页面:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
vbagcl
初级会员   /  发表于:2011-8-17 20:58:00
7#
非常感谢版主如此耐心的帮助。
有件事我在发帖时没有说明,因为我想把问题简单化,另外我认为只要是动态加载,应该是通用的。目前看来好像不具有通用性。
我想动态生成c1gridview,每行数据是动态生成的,生成的语句是:
C1GridViewRow tr = new C1GridViewRow(C1_table.Rows.Count, 0, C1GridViewRowType.DataRow, C1GridViewRowState.Normal);
C1_table.Controls[0].Controls.AddAt(C1_table.Controls[0].Controls.Count-1, tr);
语句中的C1_table是传递的c1gridview对象。
每行的单元格也是动态生成的,由于每列的数据类型不同,生成单元格的语句不同,下面是我生成日期单元格的语句:
public TableCell CreateCellDate(String tID, string tText, int tPoint, int twidth, int tHeight, int lwidth,   int lHeight, bool pReadOnly, String tip_str)
        {  
C1.Web.UI.Controls.C1Calendar.C1Calendar mycal = new C1.Web.UI.Controls.C1Calendar.C1Calendar();
            C1.Web.UI.Controls.C1Input.C1DateInput num_input = new C1.Web.UI.Controls.C1Input.C1DateInput();
            num_input.ID = tID;
            mycal.ID =tID+ &quot;mycal&quot;;
            mycal.Width = twidth;
            mycal.PopupMode = true;
            num_input.WebCalendar = mycal.ClientID;

            num_input.Width = twidth;
            num_input.Height = tHeight;
            num_input.CustomButtonAlign = C1.Web.UI.Controls.C1Input.ButtonsDisplayPosition.Right;
            num_input.UpDownAlign = C1.Web.UI.Controls.C1Input.ButtonsDisplayPosition.None;
            num_input.CalendarPopupPosition = C1.Web.UI.Controls.C1Input.CalendarPopupPositionEnum.Below;
           
            num_input.Text = tText;
            num_input.ToolTip = tip_str;
            
            tablecell.Controls.Add(num_input);
            tablecell.Controls.Add(mycal);
            tablecell.Width = lwidth;
            tablecell.Height = lHeight;
            tablecell.BorderWidth = 1;
            return tablecell;
        }
不知道是我的语法不对,还是本来这样写就是不行呢。
附带说明一句,动态生成c1gridview的函数是在protected void Page_Load(object sender, EventArgs e)调用的,应该没问题。
目前,我实现的单元格类型有:number、checkbox、textbox、DropDownList,如果能把日期也实现啦,就很完美啦。
多谢版主给以指点!
回复 使用道具 举报
vbagcl
初级会员   /  发表于:2011-8-20 12:32:00
8#
     咋没人回呢?!!!!!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2011-8-21 22:26:00
9#

回复 7# vbagcl 的帖子

C1是可以通过代码来动态生产的,不过你对每个函数的调用顺序我不是很清楚,能否把你的页面发过来我调试一下。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部