在一個UltraWebGrid的第一個column(Template Column)放了一個Checkbox ,我要檢查整個UltraWebGrid中的勾取情況,然後執行相關的操作。一般的Grid可以這樣操作(偽代碼): foreach(datarow row in grid.rows) { checkbox c = (checkbox)row.columns[0].findcontrol("checkbox"); if(c.checked) { //do shomething by row data } } 但是用UltraWebGrid要通過以下操作: //取得全部的TemplateColumn,她把第一個列(column)數據都放在一個列表中 UltraWebGrid.TemplatedColumn tcol = (WebUI.UltraWebGrid.TemplatedColumn)UltraWebGrid1.Bands[0].Columns[0]; //取得每一個column的Cell內容 foreach (Infragistics.WebUI.UltraWebGrid.CellItem item in tcol.CellItems) { CheckBox chkIsHaveRight = (CheckBox)item.FindControl("chkIsSendEmail"); if (chkIsHaveRight.Checked == true) { //通過訪問父對象取得其他資料 //item->cell->row->cell[4]->內容;在這過程中cell是item的父對象,row是cell的父對象,再訪問row下面的每4個Cell,再取得該Cell的內容。 string info = item.Cell.Row.Cells[4].Text; } } 1. UltraWebGrid添加模板列: 先选择UltraWebGrid --属性--columns--勾选Templated column 即可 <igtbl:TemplatedColumn AllowResize="Free" BaseColumnName="BT" ChangeLinksColor="True" HeaderText="标题" Key="BT" Type="HyperLink"> <CellTemplate> <asp:LinkButton ID="LinkButton1" CssClass="WordBreak" CommandArgument='<%# DataBinder.(Container.DataItem,"AQJYGXID") %>' Text='<%# DataBinder.(Container.DataItem,"BT") %>' ToolTip='<%# DataBinder.(Container.DataItem,"BT") %>' CommandName="showdetail" runat="server" Font-Underline="false"></asp:LinkButton> </CellTemplate> <Header Caption="标题"> <RowLayoutColumnInfo OriginX="2" /> </Header> <Footer> <RowLayoutColumnInfo OriginX="2" /> </Footer> </igtbl:TemplatedColumn> 2. UltraWebGrid日期列: 设置日期列的 Format属性:yyyy-MM-dd(Date) DataType属性为System.DateTime 3。取某行的某列(列名:BIDPRICE)的值: UltraWebGrid1.Rows[i].Cells.FromKey("BIDPRICE").Value或者UltraWebGrid1.Rows[i].Cells[j].Value 取某列:UltraWebGrid1.Columns.FromKey("BIDPRICE").Value 4。标题行居中显示: <HeaderStyleDefault BackColor="LightGray" BorderStyle="Solid" HorizontalAlign="Center"> </HeaderStyleDefault> 对应项居中 <CellStyle HorizontalAlign="Center"></CellStyle> 5.UltraWebGrid的固定列功能 具体步骤: (1) 在UltraWebGrid下的DisplayLayout中把TableLayout属性设为:Fixed ; UseFixedHeaders设为:True //这是指定Grid允许固定列 StationaryMargins="Header" //这使Header始终在最上面显示 (2) 设定列固定: Header下面的Fixed设置为true。这样就可以实现ID固定了,但效果图中还有一个功能就是,点击后面的任何一个列后的“图钉”图标,就可以任意进行多列固定了。如下图为我点击了“ContactName”的效果:这种功能的实现,只要修改一个属性:FixedHeaderIndicatorDefault="Button"就可以了。 6。UltraWebGrid 最下面线显示问题: 选择UltraWebGrid点击》选择Bands And Columns的DefaultrowHeight设置高度 即可。 7. 选择一行以后获得选定行指定列的值 if (e.InnerCommandEventArgs.CommandName == "showdetail") { int id = Convert.ToInt32(e.InnerCommandEventArgs.CommandArgument); for (int i = 0; i < UltraWebGrid1.DisplayLayout.SelectedRows.Count; i++) { if (UltraWebGrid1.DisplayLayout.SelectedRows[i].Cells[6].Text == "未审批")//选取一行以后获得选定行指定列的值 { string url2 = "../zhishishenbaobiao/zssbview.aspx?id=" + id + " "; Page.RegisterStartupScript("showinfo", "<script>window.open('" + url2 + "','未审批知识信息查看','width=850,height=600,toolbar=no,scrollbars=yes,status=yes,resizable=yes');</script>"); } else { string url2 = "../zhishishenbaobiao/showview.aspx?id=" + id + " "; Page.RegisterStartupScript("showinfo", "<script>window.open('" + url2 + "','已审批知识信息查看','width=850,height=600,toolbar=no,scrollbars=yes,status=yes,resizable=yes');</script>"); } } } 7. UltraWebGrid 单击单元格选中行 (1) 选择UltraWebGrid-displayout CellClickActionDefault=RowSelected (2) 选择UltraWebGrid-智能选择卡--Bands And Columns--Band[“”]--SelectRowStyle的BackColor属性 8. 设置UltraWebGrid的第0列为模板列,加入CheckBox控件,判断其状态是否被选中,代码如下: //可以写在任何地方,属于通用代码 Infragistics.WebUI.UltraWebGrid.TemplatedColumn tcol = (TemplatedColumn)UltraWebGrid1.Bands[0].Columns[0];//模板列 foreach(CellItem item in tcol.CellItems) { System.Web.UI.WebControls.CheckBox chkIsHaveRight = (System.Web.UI.WebControls.CheckBox)item.FindControl("chbShenhe"); if(chkIsHaveRight.Checked == true) { //进行相关的操作 } } 9.禁止操作列 (1) 禁止操作一列数据 Infragistics.WebUI.UltraWebGrid.TemplatedColumn tcol = (TemplatedColumn)UltraWebGrid1.Bands[0].Columns[9];//模板列 foreach (CellItem item in tcol.CellItems) { System.Web.UI.WebControls.ImageButton chkIsHaveRight = (System.Web.UI.WebControls.ImageButton)item.FindControl("ImageButton3"); chkIsHaveRight.Enabled = false; } (2) 禁止操作某列中已审批列 Infragistics.WebUI.UltraWebGrid.TemplatedColumn tcol = (TemplatedColumn)UltraWebGrid1.Bands[0].Columns[9];//模板列 foreach (CellItem item in tcol.CellItems) { System.Web.UI.WebControls.ImageButton chkIsHaveRight = (System.Web.UI.WebControls.ImageButton)item.FindControl("ImageButton3"); if (item.Cell.Row.Cells[6].Text == "已审批") { chkIsHaveRight.Enabled = false;//已审批按钮禁止选择 } else { chkIsHaveRight.Enabled = true; } } 10. webgrid 的 RowChanged 事件没有相应 解决:客户端代码中<LayoutSettings AllowAddNew="Yes" AllowDelete="Yes" AllowEdit="Yes" RowChangedAction="OnTheFlyPostback"> </LayoutSettings> 设置RowChangedAction="OnTheFlyPostback" 11 .客户端事件在哪里添加 解决:<LayoutSettings AllowAddNew="Yes" AllowDelete="Yes" AllowEdit="Yes" RowChangedAction="OnTheFlyPostback"> <ClientSideEvents OnRowValidate="wgUserRole_OnRowValidate" /> </LayoutSettings> ClientSideEvents 中可以添加客户端事件 12.WebGrid 的列内容唯一 解决: 因为我们是通过 datatable 绑定的。。绑定前 DataColumn 设置列.Unique = true; 13.隐藏一列 解决:把改列的宽设置为 0px 或者 UltraWebGrid1.Columns[i].Hidden = true; 14.WebGrid在IE6和IE7中拖动错位解决办法: 修改aspx页面中的 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 4.0 Transitional//EN">. 15.按WebGrid排序列 protected void UltraWebGrid2_SortColumn(object sender, SortColumnEventArgs e) { string newSortDirection; string sqltemp = ""; //正逆序切换 if (oldSortDirection == "ASC") newSortDirection = "DESC"; else newSortDirection = "ASC"; oldSortDirection = newSortDirection; if (e.ColumnNo != 0) { if (sqlwhere != "") { sqltemp +=" " + UltraWebGrid1.Columns[e.ColumnNo].Key + " " + newSortDirection; moDataView.RowFilter = "1=1" + sqlwhere;//sqlwhere查询条件 moDataView.Sort = sqltemp;//按选择字段排序 if (moDataView.Count == 0) { UltraWebGrid1.DataSource = moDataView; UltraWebGrid1.DataBind(); } else { UltraWebGrid1.DataSource = moDataView; UltraWebGrid1.DataBind(); } } else { moDataView.RowFilter = ""; UltraWebGrid1.DataSource = moDataView; UltraWebGrid1.DataBind(); } } }
---------------------------转---------------------------