Ext.Net开发_GridPanel行选中取值

项目中常用到GridPanel,单击(双击)一行数据后展示一些数据,打开新页面……这些功能都可以实现。只要获取单击(双击)时行的主键ID,即可!

 

Ext.Net中常见的单击(双击)取值 有一下几种:

 

一 、   注意(record.data.BI_Seq) 中的BI_Seq是该GridPanel主键。如果ColumnModel中无,则取不到值               

数据源Store 别忘了 添加属性 IDProperty="BI_Seq"

 

 

复制代码
<ext:Store ID="stProduct" runat="server">
<Reader>
<ext:JsonReader IDProperty="BI_Seq">
<Fields>
<ext:RecordField Name="BI_Seq" Type="Int" />
<ext:RecordField Name="BI_ShopId" Type="Int" />
<ext:RecordField Name="NC_ShopName" Type="String" />
<ext:RecordField Name="BI_ClassId" Type="String" />
……
……
……
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
复制代码



       

      

复制代码
js:

  function ProductSelelct(id)
  {
    alert(id);
  }

<ColumnModel>
<Columns>
<ext:Column Header="商品ID" Width="100" DataIndex="BI_Seq" /> //BI_Seq 主键ID必须有,否则下面函数娶不到值
<ext:Column Header="商品名称" Width="100" DataIndex="NC_ProductName" />
<ext:Column Header="拼音缩写" Width="100" DataIndex="NC_Abbreviation" />
<ext:Column Header="商品编码" Width="100" DataIndex="NC_ProductNameCode" />
<ext:Column Header="商品销售单价" Width="100" DataIndex="N_Price" />
<ext:Column Header="平台编码" Width="100" DataIndex="NC_ProductSkuCode" />
<ext:Column Header="商品第一属性名称" Width="100" DataIndex="NC_FirstAttributeName" />
</Columns>
</ColumnModel>
<SelectionModel>
<ext:RowSelectionModel ID="RowSelectionModel2" runat="server">
<Listeners>
<RowSelect Handler="ProductSelelct(record.data.BI_Seq);" />
</Listeners>
</ext:RowSelectionModel>
</SelectionModel>
复制代码

 效果:

 

方法二、直接看代码即会明白……

复制代码
 <SelectionModel>
<ext:RowSelectionModel runat="server" SingleSelect="true">
<DirectEvents>
<RowSelect OnEvent="RowSelect" Buffer="100">
<EventMask ShowMask="true" Target="CustomTarget" CustomTarget="#{fpnProductDetail}" />
<ExtraParams>
<ext:Parameter Name="ProductSkuId" Value="this.getSelected().id" Mode="Raw" />
</ExtraParams>
</RowSelect>
</DirectEvents>
</ext:RowSelectionModel>
</SelectionModel>

protected void RowSelect(object sender, DirectEventArgs e)
{
  string productSkuId = e.ExtraParams["ProductSkuId"];

}

复制代码

效果:

 

3  返回数据Json格式,但不影响取值。换成CheckboxSelectModel 同样可以实现功能,具体见代码……

复制代码
 <SelectionModel>
<ext:CheckboxSelectionModel ID="RowSelectionModel2" runat="server">
<DirectEvents>
<RowSelect OnEvent="RowSelect" Buffer="100">
<ExtraParams>
<ext:Parameter Name="ProductSkuId" Value="Ext.encode(#{gpOnLineProduct}.getRowsValues({selectedOnly:true}))"
Mode="Raw" />
</ExtraParams>
<EventMask ShowMask="true" Msg="数据正在生成,请稍候..." MinDelay="200" />
</RowSelect>
</DirectEvents>
</ext:CheckboxSelectionModel>
</SelectionModel>

复制代码
复制代码
     /// <summary>
/// 行选择
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void RowSelect(object sender, DirectEventArgs e)
{
RowSelectionModel sm = gpOnLineProduct.SelectionModel.Primary as RowSelectionModel;
string source = string.Empty;
foreach (SelectedRow item in sm.SelectedRows)
{
source += item.RecordID + "~";
}
Message.ShowAlert("提示", source);
}
复制代码

 

效果同样精彩:

 

                     

Ext.Net 功能很丰富,上面两点,经本人测试。如果放在拖拽窗口中,取值会出现问题    ……

如果批量取值,会出现问题

原因猜测:

因拖拽,选中了一行,则要求你拖拽后才可以单击再选择……

 

 

具体   继续     ……          

 

 

 

 

                        


作者:PEPE
出处:http://pepe.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

posted @   PEPE YU  阅读(5801)  评论(10编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示