GridView的用法积累

1.如何设置DEVEXPRESS里的GRIDVIEW里的comboxEdit仅允许下拉  

      Properties->TextEditStyle 选择DisableTextEditor 

  2.DEVEXPRESS遍历获取不了GRIDVIEW的值

 声明一个list:   List<string> ls_banzu = new List<string>();

  遍历取值: if (gridView1.RowCount>0)
                {
                    for (int i = 0; i < dt1.Rows.Count; i++)
                    {
                       
                        ls_banzu.Add(gridView1.GetRowCellValue(i, gridView1.Columns[3]).ToString());
                        
                    }
                }

这里发现  ls_banzu只能取到第一行的值,原来是光标放在gridview里会使gridview处于编辑模式,要非编辑模式才可以取到数值

解决办法:输好之后把光标移动到其它控件上。

3.删除GRIDVIEW里选中的某一行

         3.1设置gridview选中为整行:

        

        3.2删除选中的行

if (this.gridView2 == null && this.gridView2.SelectedRowsCount <= 0) 
            {
                MessageBox.Show("没有要删除的行!");
                return;
            }
            try 
            {
                DataRow row = this.gridView2.GetDataRow(gridView2.GetSelectedRows()[0]);
                row.Delete();
                return;
            }
            catch 
            {
                this.ShowErrorMessage("请选择1行数据进行删除!");
            }

        3.3选中行后,该行改变颜色  --待研究

4.将后台数据绑定到gridview中,编辑后,获取gridview里的值,并保存到数据库

        (1)获取值并绑定到DEV Grdi

   datatable dt1 =new datatable();  --初始化Table 用来做绑定到gridcontrol的容器

   private void  aaa_Load(object sender, EventArgs e)
        {

                #region 初始化Table
                this.dt1.Columns.Add("RCARD");
                this.dt1 .Columns.Add("MITEMNAME");
                this.dt1 .Columns.Add("MONAME");
                this.dt1 .Columns.Add("MITEMMODEL");
                this.dt1 .Columns.Add("REPAIRREASON");
                this.dt1 .Columns.Add("REMARK");
                this.gdFirst.DataSource = this.dt1 ;
                #endregion

       }

----绑定数据 ↓

if (_facade == null)         
                _facade = new DataCollectFacade(this.DataProvider);
          
            OutputMessage output = _facade.CheckZJRcard(strrcard, LoginInfo.Current.OrgID,intnum);

              
            if (!output.IsSuccess)
            {
                flag = 1;
                ShowErrorMessage(output.ErrorMessage);
                return;
            }
            else
            {
               DataTable dt = output.DataSet.Tables["Mos"];
                    if (dt != null)
                    {
                       this.dt1.Rows.Add( new object[] 
                            { 
                    dt.Rows[0][0].ToString(),
                    dt.Rows[0][1].ToString(),
                    dt.Rows[0][2].ToString(),
                    dt.Rows[0][3].ToString(),
                    "",
                    ""
                    });
                        }

              }

(2)用list获取gridview中的值

                List<string> ls_rcard = new List<string>();
                List<string> ls_mitem = new List<string>();

 if(gridView2.RowCount>0)
                {
                    for (int i = 0; i < this.dt1.Rows.Count; i++) 
                    {
                        ls_rcard.Add(gridView2.GetRowCellValue(i, gridView2.Columns[0]).ToString());

--参数1:行,参数2:列
                        ls_mitem.Add(gridView2.GetRowCellValue(i, gridView2.Columns[1]).ToString());
                     }

               }

5.DevExpress.XtraGrid.GridControl只能显示一次数据,第二次就显示不出来了

原因:

1.刷新数据:需要保证每次从数据源中得到的数据都是最新的。C#无法自动刷新,需要我们手动刷新,否则数据源仍然显示上一次的数据。

gridView.RefreshData();

2.确保每次需要显示数据时,都将正确的数据源重新绑定到 GridControl。

方法1:可以在每次需要更新数据时,手动将新的数据源分配给 GridControl 的 DataSource 属性

gridControl.DataSource = null; // 清空原有的数据源
gridControl.DataSource = newDataSource; // 分配新的数据源

例子: this.gdFirst.DataSource = null;
                this._InnoTable.Clear();
                this.gdFirst.DataSource = this._InnoTable;

方法2:

如果你不想重新绑定数据源,可以尝试手动刷新 GridControl 来显示最新的数据。在数据源发生变化后,调用 GridControl 的 RefreshDataSource 方法来刷新数据

gridView.RefreshData();

这将会重新加载数据源,并更新 GridControl 的显示。

无论你选择重新绑定数据源还是手动刷新 GridControl,都可以确保 GridControl 显示最新的数据。

方法3:

惊了,这三句每一个都可以实现。归根结底是,确保girdcontrol获的最新的数据源。

 //this.gridView2.RefreshData();
            //this.gdFirst.RefreshDataSource();
            this._InnoTable.Clear();

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
GridView是Android中常用的布局控件之一,用于在屏幕上展示多行多列的数据,类似于网格的形式。下面是GridView的使用方法: 1. 在布局文件中添加GridView控件 ```xml <GridView android:id="@+id/grid_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:numColumns="3" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:padding="10dp" android:columnWidth="100dp" /> ``` 其中`numColumns`属性表示每行显示的列数,`verticalSpacing`和`horizontalSpacing`属性表示网格之间的垂直和水平间距,`padding`属性表示GridView的内边距,`columnWidth`属性表示每个网格的宽度。 2. 创建适配器Adapter GridView需要一个适配器来提供数据,可以使用ArrayAdapter或BaseAdapter。这里以BaseAdapter为例: ```java public class MyAdapter extends BaseAdapter { private Context mContext; private List<String> mData; public MyAdapter(Context context, List<String> data) { this.mContext = context; this.mData = data; } @Override public int getCount() { return mData.size(); } @Override public Object getItem(int position) { return mData.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = LayoutInflater.from(mContext).inflate(R.layout.grid_item, null); holder = new ViewHolder(); holder.textView = convertView.findViewById(R.id.text_view); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.textView.setText(mData.get(position)); return convertView; } static class ViewHolder { TextView textView; } } ``` 适配器中重写了BaseAdapter的四个方法,其中`getView()`方法用于设置每个网格的内容。 3. 设置适配器Adapter 在Activity或Fragment中设置适配器: ```java GridView gridView = findViewById(R.id.grid_view); List<String> data = new ArrayList<>(); data.add("Item 1"); data.add("Item 2"); data.add("Item 3"); data.add("Item 4"); MyAdapter adapter = new MyAdapter(this, data); gridView.setAdapter(adapter); ``` 运行程序即可看到GridView中展示了四个网格,每个网格中显示了对应的文本。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值