[default] |
二、WebCombo的基本用法
1、 实现可输可选的下拉表格
Editable->True
2、 将下拉表格加载到UltraWebGrid中去
UltraWebGrid1.Columns[1].Type = ColumnType.DropDownList;
UltraWebGrid1.Columns[1].ValueList.WebCombo = WebComboGood
原文地址:http://hi.baidu.com/%D1%EE%D0%F9%E5%E3/blog/item/3fecda55e3e0e75c574e00a9.html
Infragistics NetAdvantage UltraWebGrid使用之一
在一个UltraWebGrid的第一个column(Template Column)放了一個Checkbox ,检查整个UltraWebGrid中的勾取情況,然后执行相关的操作。
foreach(datarow row in grid.rows)
{
checkbox c = (checkbox)row.columns[0].findcontrol("checkbox");
if(c.checked)
{
//do shomething by row data
}
}
//取得全部的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 即可
HeaderText="标题" Key="BT" Type="HyperLink">
' Text='<%# DataBinder.Eval(Container.DataItem,"BT") %>' ToolTip='<%# DataBinder.Eval(Container.DataItem,"BT") %>' CommandName="showdetail" runat="server" Font-Underline="false">
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。标题行居中显示:
对应项居中
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');
}
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');
}
}
}
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 事件没有相应
解决:客户端代码中
设置RowChangedAction="OnTheFlyPostback"
11 .客户端事件在哪里添加
解决:
ClientSideEvents 中可以添加客户端事件
12.WebGrid 的列内容唯一
解决: 因为我们是通过 datatable 绑定的。。绑定前 DataColumn 设置列.Unique = true;
13.隐藏一列
解决:把改列的宽设置为 0px 或者 UltraWebGrid1.Columns[i].Hidden = true;
14.WebGrid在IE6和IE7中拖动错位解决办法:
修改aspx页面中的
.
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();
}
}
}
Infragistics NetAdvantage 组件说明 WebGrid(二)
UltraWebGrid 客户端对象树
Webgrid虽然是基于服务的控件,但是它也为客户端开发提供了强大的支持,Client Side Object Model是基于javascript对象模式的,它能许多功能而不需要往服务器回送。
Ø Grid 对象:
通过var grid =igtbl_getGridById('UltraWebGrid1');获取,也可以直接引用oUltraWebGrid1
常用属性:
n bands:得到属于这个grid的bands数组
在客户端中没有bands集合对象,代替它的是利用grid的bands属性来实现
var grid = igtbl_getGridById('UltraWebGrid1');
grid.bands[0].RowSizing = 2;
n rows:返回所有grid中band(0)中所有rows
var grid = igtbl_getGridById('UltraWebGrid1');
grid.Rows.getRow(0).RowSizing = 2;
Ø Band对象:
代表所有的与之层次对应的所有的rows
通过 var band = igtbl_getGridById('UltraWebGrid1').Bands[n];获取或var band = igtbl_getBandById('cellId');
常用属性:
n Columns:得到一个Columns数组,原理类似于grid中的bands属性
var band = igtbl_getBandById('cellId');
band.columns[0].HeaderClickAction = 1;
Ø Column对象
通过var col = igtbl_getGridById('UltraWebGrid1').Bands[n].Columns[m];获取或var col = igtbl_getColumnById('cellId');
常用方法:
n SetHidden方法
setHidden(true):隐藏指定列
Ø Cell对象
通过Row.getCell(n)获取
常用方法
n SetValue
n GetValue
n GetPrevCell
n getNextCell
Ø Row对象
Row对象不是为grid中每行自动产生的,而是根据需要动态创建的
通过igtbl_getRowById(cellId)获取,或Rows.getRow(n)获取,或igtbl_getActiveRow(gridName)获取。
常用方法:
n getCell(index)
返回当前行中指定的Cell对象,索引是从0开始的。
Ø Rows集合对象
实际应用
数据源
Ø Dataset
webgrid可以使用许多数据源,只要这些数据源实现IList, ITypedList or IBindingList 接口就可以应用。最强大之处可以包含多个相关的datatable,把这些datatable以分层grid的方式来表现。
UltraWebGrid1.DataSource = dataset
UltraWebGrid1.DataBind()
Ø 在InitializeLayout事件中可以隐藏某列。
e.Layout.Bands(0).Columns.FromKey("Salary").Hidden = True
数据操作
Ø 显示一个值,存储另一个值
利用ValueList,dataValue,DisplayText
Dim valueList As Infragistics.WebUI.UltraWebGrid.ValueList
valueList = new Infragistics.WebUI.UltraWebGrid.ValueList()
valueList.ValueListItems.Add 1, "One"
valueList.ValueListItems.Add 2, "Two"
valueList.ValueListItems.Add 3, "Three"
valueList.DisplayStyle = Infragistics.WebUI.UltraWebGrid.ValueListDisplayStyle.DisplayText
UltraWebGrid1.DisplayLayout.Bands(0).Columns.FromKey("Notes").Type = Infragistics.WebUI.UltraWebGrid.ColumnType.DropDownList
UltraWebGrid1.DisplayLayout.CellClickActionDefault = Infragistics.WebUI.UltraWebGrid.CellClickAction.Edit
Infragistics NetAdvantage 组件说明 WebGrid(三)
UltraWebGrid1.DisplayLayout.Bands(0).Columns.FromKey("Notes").ValueList = valueList
另外一种方式
UltraWebGrid1.Columns(0).Type = Infragistics.WebUI.UltraWebGrid.ColumnType.DropDownList
Dim PlantList As ValueList = UltraWebGrid1.Columns(0).ValueList
PlantList.DataSource = db.getAllPlantInfo.Tables(0).DefaultView
PlantList.ValueMember = "plantnum"
PlantList.DisplayMember = "plantname" 必须和查询出的字段大小写一致
PlantList.DataBind()
UltraWebGrid1.DisplayLayout.AllowUpdateDefault = AllowUpdate.Yes
UltraWebGrid1.DisplayLayout.CellClickActionDefault = CellClickAction.Edit
关于表格原有数据键值或编号绑定问题
利用Cell.Title解决这个问题
Dim ds1 As DataSet
ds1 = db.getAllPlantInfo
UltraWebGrid1.Columns(0).Type = Infragistics.WebUI.UltraWebGrid.ColumnType.DropDownList
Dim PlantList As ValueList = UltraWebGrid1.Columns(0).ValueList
PlantList.DataSource = ds1.Tables(0).DefaultView
PlantList.ValueMember = "plantnum"
PlantList.DisplayMember = "plantname"
PlantList.DataBind()
UltraWebGrid1.Columns(1).Type = Infragistics.WebUI.UltraWebGrid.ColumnType.DropDownList
Dim PlantList2 As ValueList = UltraWebGrid1.Columns(1).ValueList
PlantList2.DataSource = ds1.Tables(0).DefaultView
PlantList2.ValueMember = "plantnum"
PlantList2.DisplayMember = "plantname"
PlantList2.DataBind()
UltraWebGrid1.DisplayLayout.AddNewBox.Prompt = "增加->"
UltraWebGrid1.Bands(0).AddButtonCaption = "出让方"
Dim ds As DataSet
ds = db.getFdqjy
UltraWebGrid1.DataSource = ds.Tables(0).DefaultView
UltraWebGrid1.Columns(0).AllowUpdate = Infragistics.WebUI.UltraWebGrid.AllowUpdate.Yes
UltraWebGrid1.Columns(1).AllowUpdate = Infragistics.WebUI.UltraWebGrid.AllowUpdate.Yes
UltraWebGrid1.Columns(2).AllowUpdate = Infragistics.WebUI.UltraWebGrid.AllowUpdate.Yes
UltraWebGrid1.DisplayLayout.AllowDeleteDefault = AllowDelete.Yes
UltraWebGrid1.DisplayLayout.AllowUpdateDefault = AllowUpdate.Yes
UltraWebGrid1.DisplayLayout.RowSelectorsDefault = RowSelectors.Yes
UltraWebGrid1.DisplayLayout.CellClickActionDefault = CellClickAction.RowSelect
UltraWebGrid1.DataBind()
Dim en As UltraGridRowsEnumerator
en = UltraWebGrid1.Bands(0).GetRowsEnumerator()
Dim row As UltraGridRow
While en.MoveNext() <> Nothing
row = en.Current
row.Cells(0).Title = ds.Tables(0).Rows(row.Index).Item(0)
row.Cells(1).Title = ds.Tables(0).Rows(row.Index).Item(2)
End While
说明:原希望通过cell.text 和cell.value解决,但是通过查询资料和试验,发现text作为value的辅助,他们的是重叠的,其中一个设置会覆盖另一个。Title则可以插入到cell的tag中
Ø 用户接口:选择、激活、编辑
row和cell可以作为激活的对象,并且如果cell为激活则包含cell的row自动成为激活
Active不同于选择,多行可以选择,但在某一时刻只能有1 row和 1 Cell可以是激活的。
Ø 去掉滚动条
Me.UltraWebGrid1.Width=Unit.Percentage(100)
Me.UltraWebGrid1.Height=Unit.Percentage(100)
Me.UltraWebGrid1.DisplayLayout.FrameStyle.CustomRules = "table-layout:auto"
Ø 行的选择和激活行
当指向一个行时,这个行就会编程active row,成为active row由以下几个因素决定,
1. 当行中的某个cell进入编辑模式,行就自动成为激活;
2. 选择行,多选时,最头一个行作为active row;
3. 通过代码UltraWebGrid1.DisplayLayout.ActiveRow = UltraWebGrid1.Rows(0)
可以调整active row的外观
UltraWebGrid1.DisplayLayout.ActiveRow.Style.BackColor = Color.Red
UltraWebGrid1.DisplayLayout.ActiveRow.Style.Border = Color.Blud
Ø 改变激活行
Dim objRow As Infragistics.WebUI.UltraWebGrid.UltraGridRow
objRow = Me.UltraWebGrid1.Rows(5)
Me.UltraWebGrid1.ActiveRow = objRow
Ø Cell选择和激活
成为active cell的条件与行类似。
UltraWebGrid1.DisplayLayout.ActiveCell = UltraWebGrid1.Rows(0).Cells(0)
可以调整active cell的外观
UltraWebGrid1.DisplayLayout.ActiveCell.Style.BackColor = Color.Red
Ø 当click Cell时进入编辑模式
Me.UltraWebGrid1.DisplayLayout.AllowUpdateDefault = AllowUpdate.Yes
Me.UltraWebGrid1.DisplayLayout.CellClickActionDefault = CellClickAction.Edit
Ø cell中内嵌编辑控件
1. 把编辑控件(日期选择控件)加入到页面中,把编辑控件的边设成None
2. 加入webgrid,displayout.AllwoUpdateDefault=True
3. 利用webgrid列属性向导关联编辑控件和webgrid中的列。
Infragistics NetAdvantage 组件说明 WebGrid(四)
样式和格式
UltraWebGrid加载许多不同的样式对象,每个样式对象有自己的属性,
一些Style有相对应的default属性(对象?)比如:HeaderStyleDefault、RowStyleDefault、RowAlternateStyleDefault
常用属性:
Backcolor,BackGroundImage,BorderColor,BorderStyle,BorderWidth,Cursor,Font,ForeColor,Height,Width,Margin,Padding,HorizongtalAlign,VerticalAlgin,warp,
Ø 创建和应用样式
Dim style as GridItemStyle
style = new GridItemStyle()
style.BackColor = System.Drawing.Color.Red
style.ForeColor = System.Drawing.Color.White
style.BorderStyle = BorderStyle.Groove
style.BorderWidth = New Unit("3px")
style.BackgroundImage = "images/landscape.jpg"
style.Font.Bold = true
UltraWebGrid1.DisplayLayout.AddNewBox.Style = style
也可以直接设置
UltraWebGrid1.DisplayLayout.RowSelectorStyleDefault.BackColor = System.Drawing.Color.Red
设置表头样式
UltraWebGrid1.DisplayLayout.HeaderStyleDefault.CssClass = "TD_Header"
隐藏Row Select
Me.UltraWebGrid1.DisplayLayout.RowSelectorsDefault = Infragistics.WebUI.UltraWebGrid.RowSelectors.No
隐藏cell超出部分,用省略号表示
UltraWebGrid1.DisplayLayout.RowStyleDefault.Wrap = False
UltraWebGrid1.DisplayLayout.RowStyleDefault.TextOverflow = Infragistics.WebUI.UltraWebGrid.TextOverflow.Ellipsis
固定表头
UltraWebGrid1.DisplayLayout.StationaryMargins = Infragistics.WebUI.UltraWebGrid.StationaryMargins.HeaderAndFooter
根据Cell不同值显示不同样式
放置在UltraGrid的InitializeRow事件中
If e.Row.Cells.FromKey("Subject").Value = "Test" Then
e.Row.Cells.FromKey("Subject").Style.BackColor = System.Drawing.Color.Red
End If
固定某一列
UltraWebGrid1.DisplayLayout.UseFixedHeaders = True
UltraWebGrid1.DisplayLayout.FixedHeaderIndicatorDefault = FixedHeaderIndicator.Button
AddNewBox设置
UltraWebGrid1.DisplayLayout.AddNewBox.ButtonStyle.CssClass设置button的样式
UltraWebGrid1.DisplayLayout.AddNewBox.ButtonStyle.Cursor设置光标落在上面显示的样式
更新数据库
批量更新数据库,需要页面上有提交按钮
1. 设置webgrid 能Update
2. 设置default cell click是edit模式
3. 增加guid隐藏列,实现可以新增多行
4. 增加以下代码到InitializeLayout事件中
e.Layout.Bands(0).DataKeyField = "CustomerID"
转载于:http://blog.163.com/red_guitar@126/blog/static/1172061282010027111649428/