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