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/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM