用户
 找回密码
 立即注册

65

主题

183

帖子

891

积分

高级会员

Rank: 4

积分
891
发表于 2016-5-1 16:57:34
     我自己的理解可能有误,请求官方正解,这几个概念太容易混淆了:

     Imagebutton控件的    DataMember(这个还是不可视值)    DisplayMember(绑定ImageButton的ResourceID属性)   ResourceID(直接给ID)     Text(这个是直接给文本吗?)      TextMember (绑定ImageButton的Text属性)




    在ROW.Cell.Items[]   中的  DataMember(对应上边DataMember?)    DisplayMember(对应上边DisplayMember即ResourceID么?)     Text(这个是TextMember么?)      Value(按以前的理解是DataMember)    DefaultValue(按之前的理解他对应ResourceID?)
使用道具 举报 回复
发表于 2016-5-1 17:16:06
在 ROW.Cell.Items[]   中  DisplayMember 与 DataMember 都是只读。 现在我能通过 DefaultValue 去操作到 绑定控件的 ResourceID 。 但是通过 Text  与  Value 却无法操作到  绑定控件的 Text 与 DataMember
使用道具 举报 回复 支持 反对
发表于 2016-5-3 11:26:27
Csharp 发表于 2016-5-1 17:16
在 ROW.Cell.Items[]   中  DisplayMember 与 DataMember 都是只读。 现在我能通过 DefaultValue 去操作到  ...

解答:ImageButton控件的DataMember,DisplayMember是用于GridView中数据绑定时指定绑定的字段,DataMember对应ROW.Cell.Items[]中的Value,TextMember对应ROW.Cell.Items[]中Text,DisplayMember对应ROW.Cell.Items[]中DefaultValue,请参考http://www.smobiler.com/bbs/foru ... &extra=page%3D1中的DefaultValue指定的映射的属性。
ResourceID是ImageButton控件的属性,用于指定ImageButton控件显示的图像的ID,Text用于指定ImageButton控件显示在图像下面的文本。

这里容易混淆的是基础控件和ROW.Cell.Items[]中的控件的属性,可以这样理解


由于GridView中需要指定一个Layout作为模板,这个Layout是一个窗体,所以为了使GridView在数据绑定时可以绑定模板控件中的数据,在基础控件中添加了DataMember,DisplayMember等属性。
控件中的DataMember用于指定ROW.Cell.Items[]中的Value
控件中的DisplayMemeber用于指定ROW.Cell.Items[]中的DefaultValue
由于ROW.Cell.Items[]的父类型是MobileViewCellItem,所以我们会看到有MobileViewCellItemImageButton这个类,它和基础控件的ImageButton的属性是对应的。MobileViewCellItem只用于使用了Layout作为布局的控件中。


目前使用Layout作为布局的有MobileForm的LeftLayout,RightLayout,FooterLayout,GridView
使用道具 举报 回复 支持 反对
发表于 2016-5-3 16:29:39
在 ROW.Cell.Items[模板控件名]   中  DisplayMember 与 DataMember 都是只读的。

但是在 在 ROW.Cell.Items[模板控件名]   中Text  与  Value 属性是可以付值的。但是不能改写绑定控件的 Text 与 DataMember

ROW.Cell.Items[模板控件名] . DefaultValue ------的确可以改写到对应控件的绑定ResourceID

ROW.Cell.Items[模板控件名] .text ----- 无法改写到对应控件的绑定TextMember
ROW.Cell.Items[模板控件名] .value ------无法改写到对应控件的绑定DataMember



使用道具 举报 回复 支持 反对
发表于 2016-5-4 17:55:09
Csharp 发表于 2016-5-3 16:29
在 ROW.Cell.Items[模板控件名]   中  DisplayMember 与 DataMember 都是只读的。

但是在 在 ROW.Cell.Ite ...

DataMember、DisplayMember和TextMember是指的Layout的界面(样式模板界面)控件中的数据绑定字段(只是用于数据绑定的),ROW.Cell.Items[模板控件名] 对应的父类型是MobileViewCellItem,它的DataMember、DisplayMember是从Layout界面控件中继承下来的(只是为了显示当前的值是从哪个字段绑定的),所以不能修改的。MobileViewCellItem的Text、Value和ResourceID是MobileViewCellItem中具体的属性,所以是可以被修改的。
使用道具 举报 回复 支持 反对
发表于 2016-5-4 19:00:04
Lincy.Lin 发表于 2016-5-4 17:55
DataMember、DisplayMember和TextMember是指的Layout的界面(样式模板界面)控件中的数据绑定字段(只是用 ...

MobileViewCellItem的DefaultValue可以改到Layout界面控件的ResourceID

在MobileViewCellItem中如果也能修改Layout界面控件的DataMember、TextMember感觉更方便一点。


如果不能直接修改,哪么,我只有新增 table 的列,然后在Layout界面控件中去绑定。 如果可以像DefaultValue改到ResourceID哪样,哪就可以在遍历ROW.Cell.Items[模板控件名] 时,动态绑定了。
使用道具 举报 回复 支持 反对
发表于 2016-5-5 14:41:15
Csharp 发表于 2016-5-4 19:00
MobileViewCellItem的DefaultValue可以改到Layout界面控件的ResourceID

在MobileViewCellItem中如果也能 ...

MobileViewCellItem的DefaultValue并不是修改Layout界面控件的ResourceID,而是MobileViewCellImageButtonItem的ResourceID。

如果不能直接修改,哪么,我只有新增 table 的列,然后在Layout界面控件中去绑定。
这句话并不是特别理解,你是需要实现什么样的需求
使用道具 举报 回复 支持 反对
发表于 2016-5-5 22:34:59
oudi 发表于 2016-5-5 14:41
MobileViewCellItem的DefaultValue并不是修改Layout界面控件的ResourceID,而是MobileViewCellImageButto ...

比如 DEMO 中的一段代码,我改成了 ImageButton1 ,假设他是  Layout 中的一个图片控铵控件

    ROW.Cell.Items["ImageButton1"]   

===========================================================

   foreach (GridViewRow ROW in GridView1.Rows)
                {
                    ROW.Cell.Items["ImageButton1"].DefaultValue  // 在这里这么用,可以改到ResourceID
                  
                    ROW.Cell.Items["ImageButton1"].Text  // 这里却改不到第一行ImageButton1控件的text

                    ROW.Cell.Items["ImageButton1"].Value // 这里却改不到第一行ImageButton1控件的value
                  

                }
使用道具 举报 回复 支持 反对
发表于 2016-5-6 09:48:03
Csharp 发表于 2016-5-5 22:34
比如 DEMO 中的一段代码,我改成了 ImageButton1 ,假设他是  Layout 中的一个图片控铵控件

    ROW.Cel ...

是可以修改到Text和Value的
代码如下:

  1.         private void SmobilerForm1_Load(object sender, EventArgs e)
  2.         {
  3.             //在GridView的Layout界面,添加一个ImageButton,并设置DataMember为Value,DisplayMemeber为Resource,TextMemeber为Text
  4.             DataTable dt = new DataTable("Temp");
  5.             dt.Columns.Add(new DataColumn("Resource", typeof(string)));
  6.             dt.Columns.Add(new DataColumn("Text", typeof(string)));
  7.             dt.Columns.Add(new DataColumn("Value", typeof(int)));

  8.             for (int i = 0; i <= 9; i++)
  9.             {
  10.                 DataRow row = dt.NewRow();
  11.                 row["Resource"] = i.ToString();
  12.                 row["Text"] = i.ToString();
  13.                 row["Value"] = i;
  14.                 dt.Rows.Add(row);
  15.             }

  16.             this.gridView1.DataSource = dt;
  17.             this.gridView1.DataBind();


  18.             ////设置为初始化值,在第二次测试时将注释取消
  19.             //foreach (GridViewRow row in this.gridView1.Rows)
  20.             //{
  21.             //    row.Cell.Items["imageButton1"].DefaultValue = "";
  22.             //    row.Cell.Items["imageButton1"].Text = "初始值";
  23.             //    row.Cell.Items["imageButton1"].Value = 0;
  24.             //}
  25.         }
复制代码
使用道具 举报 回复 支持 反对
发表于 2016-5-6 18:48:49
oudi 发表于 2016-5-6 09:48
是可以修改到Text和Value的
代码如下:

可以了,就是这要的这个效果,关键代码就是你上边注释的部分。
使用道具 举报 回复 支持 反对
12下一页
发新帖
您需要登录后才可以回帖 登录 | 立即注册