用了快半年的DevExpress控件确实想起最开始接触的艰辛,所以在这里把自己在开发过程中需要注意的地方记下,希望给新接触的人一个提示,纯属个人用法,不对的地方还请指出:
xtragrid:
1、如何在表格中选择了下拉后,更具下拉列表的值自动带出其他值
private void gridView1_CellValueChanging(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
if (is_status != "") return;
DevExpress.XtraEditors.Repository.RepositoryItemGridLookUpEdit glue = (DevExpress.XtraEditors.Repository.RepositoryItemGridLookUpEdit)gridView1.Columns["SL_CNEWID"].ColumnEdit;
if (glue == null) return;
DataRowView drv = (DataRowView)glue.GetRowByKeyValue(e.Value);
if (drv == null) return;
is_status = "ing";
gv.SetRowCellValue(gv.FocusedRowHandle, gv.Columns["SL_NAME"], drv["货物名称"]);
gv.SetRowCellValue(gv.FocusedRowHandle, gv.Columns["SL_MODEL"], drv["型号"]);
gv.SetRowCellValue(gv.FocusedRowHandle, gv.Columns["SL_SUNEWID"], drv["供应商"]);
is_status = "";
}
注:有时候这个SetRowCellValue方法会触发,CellValueChanged事件,这里需要定义一个实例变量is_status来标注。
2、根据表格中字段1的信息,筛选字段2中的下拉列表,可以多列筛选:
private void gridView1_CellValueChanged(object sender, DevExpress.XtraGrid.Views.Base.CellValueChangedEventArgs e)
{
if (is_status != "") return;
gridView1.CloseEditor();
gridView1.UpdateCurrentRow();
string ls_slnewid = "";
DevExpress.XtraGrid.Views.Grid.GridView gv = (DevExpress.XtraGrid.Views.Grid.GridView)sender;
if (e.Column.FieldName.ToUpper() == "SL_HS")
{
//对下拉列表进行筛选
DevExpress.XtraEditors.Repository.RepositoryItemGridLookUpEdit glue = (DevExpress.XtraEditors.Repository.RepositoryItemGridLookUpEdit)gridView1.Columns["SL_CNEWID"].ColumnEdit;
if (glue == null) return;
glue.View.Columns["HS编码"].FilterInfo = new DevExpress.XtraGrid.Columns.ColumnFilterInfo("HS编码 = '" + e.Value.ToString() + "'");
//glue.View.ActiveFilterString = "CA_HS = '"+ e.Value.ToString() +"'";
}
}
3、
XtraReport:
1、为什么做完报表了,在实际运行中明明有多行数据缺只显示一行?
网上有人说在构造函数中赋值,反正我是没成功,需要在制作报表中把报表关联的表去掉即可!
2、