在UltraWebGrid里的模板列添加控件

一、在向Grid里添加控件的时候,可以用以下方法动态添加,不过这种方式添加的控件类型有限,也不是很灵活。

if (!uwg_tagconfig.Columns.Exists("detail"))
        {
            uwg_tagconfig.Columns.Add(new UltraGridColumn("detail", "查看详情", ColumnType.Button, "详情"));
        }
        for (i = 0; i < uwg_tagconfig.Rows.Count; i++)
        {
            uwg_tagconfig.Rows[i].Cells.FromKey("detail").Text = "查看详情";
        }

Grid响应这个事件:

protected void uwg_tagconfig_ClickCellButton(object sender, CellEventArgs e)            

二、还可以手动创建模版列,然后添加控件,可以添加任何控件:

1、手动添加模板列。编辑模板-》选择CellTemplate,从控件箱里拖动控件到模板内:

<celltemplate>
      <asp:Button ID="Button1"  CausesValidation="false" runat="server" OnClick="Button1_Click" Text="删除"  Width="100%" />
 </celltemplate>

2、添加响应事件 protected void Button1_Click(object sender, EventArgs e),用法和普通按钮一样。

3、通过下面代码设置该控件属性

TemplatedColumn tc = (TemplatedColumn)uwg_tagconfig.Columns.FromKey("delete");
        foreach (CellItem row in tc.CellItems)
        {
            Button btn = (Button)row.FindControl("Button1");
            btn.Attributes.Add("onclick", "if(!window.confirm('您确认要删除吗?'))return false;");
        }
        //uwg_tagconfig.Columns.FromKey("delete").Move(20);

4、在按钮事件里,通过下列代码获取行号,读取该行其他列的信息:

Button btn = (Button)sender;
 int rowindex = ((CellItem)btn.NamingContainer).Cell.Row.Index;

三、遇到的问题:

1、设置完按钮的属性后,给每个按钮加了客户端代码onclick提示删除,如果这时在Button1_Click里编写弹出对话框代码,可能不会弹出后面的对话框。

2、在测试的时候,我发现页面加载后,第一次点击按钮,不会执行Button1_Click里代码,而第二次和以后就不会出问题了,最后发现是多了这句

uwg_tagconfig.Columns.FromKey("delete").Move(20);,不知道为什么不能调列的位置。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值