首页 > 代码库 > GridView控件显示有外键实体

GridView控件显示有外键实体

1).先拖入GridView控件,再拖入数据源控件 ObjectDataSource ,配置数据源控件:

      1.配置SELECET得到所有数据时,得先修改自动生成代码 DAL.Room 的一个方法: if (strWhere != null && strWhere.Trim() != "")

 1         /// <summary> 2         /// 获得数据列表 3         /// </summary> 4         public DataSet GetList(string strWhere) 5         { 6             StringBuilder strSql = new StringBuilder(); 7             strSql.Append("select RoomNum,RoomType,RoomState,BedNum,GuestNum,Descrption "); 8             strSql.Append(" FROM Room "); 9             if (strWhere != null && strWhere.Trim() != "")10             {11                 strSql.Append(" where " + strWhere);12             }13             return DbHelperSQL.Query(strSql.ToString());14         }

  2.在配置DELETE删除一条数据时,得在 BLL.Room 总增加一个方法的重载,这是由于数据源控件所有的操作都是基于 Model 进行互相传值的:

 1         /// <summary> 2         /// 删除一条数据 3         /// 重载下一个方法,传入对象模型 4         /// </summary> 5         public bool Delete(Model.Room model) 6         { 7  8             return Delete(model.RoomNum);; 9         }10         /// <summary>11         /// 删除一条数据12         /// </summary>13         public bool Delete(string RoomNum)14         {15             16             return dal.Delete(RoomNum);17         }

  3.还的必须指定 GridView 的一个属性【DataKeyNames="RoomNum"】,GridView中 DataKeyNames 里面存的值都相当于你表里面的标志列,当你要用到的时候就可以得到这个标志列,去得到你的其他的数据信息.就如一个隐藏的值~~!!

  4.经过上面三步,【删除】【查找】都可以进行实现,但是对于【更新】由于现今无法实现对外键实体的展示,所以总是失败,怎么处理才能将外键实体显示出来???

  解决方案:添加【自定义模板】----用来显示外键实体,代码如下:

 1 <asp:TemplateField HeaderText="房间类型"> 2                 <ItemTemplate> 3                     <asp:Label ID="Label1" runat="server" Text=<%# Eval("RoomType.TypeName") %>></asp:Label> 4                 </ItemTemplate> 5             </asp:TemplateField> 6             <asp:TemplateField HeaderText="房间价格"> 7                 <ItemTemplate> 8                     <asp:Label ID="Label2" runat="server" Text=<%# Eval("RoomType.Price") %>></asp:Label> 9                 </ItemTemplate>10             </asp:TemplateField>

-------------------------------------------上面两截代码中注意的是 必须使用关键字【Eval】,而不是【Bind】,这是由于Bind是双向绑定~~;另外 Eval()方法还有一个重载()----第一个参数为绑定的字段,第二个参数为 显示的格式。其中代码段中的"{0:C}"----C表示已金钱的格式显示

1 <asp:TemplateField HeaderText="房间价格">2                 <ItemTemplate>3                     <asp:Label ID="Label2" runat="server" Text=<%# Eval("RoomType.Price","{0:C}") %>></asp:Label>4                 </ItemTemplate>5             </asp:TemplateField>

 

这样基本就可以显示出【外键实体的信息】,但是

 

GridView控件显示有外键实体