[Ext.Net]Gridpanelにハイパーリンクを挿入
12116 ワード
今日はいきなりGridpanelのある列にハイパーリンクを挿入して、クリック機能を実現したいと思います.しかし、ネット上の資料を探しても、適当なものは見つからなかった.そこでいろいろな方法を試して、最終的に成功して、ここでみんなと私の成果を分かち合います!もともと、多くのテクニックは実際には絶えず革新と発見が必要だった.
こちらでは、コードの一部、Gridpanelの列を示しています.赤い部分を太くすることに注意してください.
rendererは、一般にGridにおけるカラムモデルのレンダリングにおいて、その詳細をExt.gridに記録するために用いる.ColumnModelでのsetRenderer(Number col,Function fn)メソッドにあります.renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){}
含むパラメータの紹介:1.valueは現在のセルの値です.2.cellmetaに保存されているのはcellIdセルid、idは列番号、cssはこのセルのcssスタイルです.3.recordはこの行のすべてのデータです.何がほしいですか.record.data[「id」]はこれで入手できます.4.rowIndexは行番号で、最初から下に数えるという意味ではなく、ページ分け後の結果を計算しています.5.columnIndex列番号.6.store、これはすごいですね.実はこれはあなたが表を作ったときに伝えたdsです.つまり、表の中のすべてのデータを勝手に呼び出すことができます.ああ、すごいですね.
(違うよ、先輩にオノを!こちらのFnの後ろにあるのはJsの関数名です.
効果図:クリックして表示して、ページをジャンプして、アドレスを通じて见ることができて、同时にIDの过去を伝えて、相応のページのジャンプをして、idの仕事を得ることができます.
次に、上記のコードを改善しました.ハイパーリンクをクリックすると、新しいページがポップアップします.
効果図
プロンプトボックスをポップアップし、「OK」をクリックして、小さなウィンドウでページを開きます.
これは、同じページのWindowを直接ポップアップできるかどうか、また新しいアイデアが出てきましたが、前からHandler=「#{window_id}.show()」;を選択してウィンドウを開きます.そこで、私は友达と討論して、彼は考えを提供して、私は試して、成功しました.大まかな考え方は、やはり列にdetailsのFunctionをトリガーするかということです.そしてdetails関数ではハイパーリンクをクリックして別の関数btnClickにジャンプし,btnClickは実装ボタンのクリックイベントである.その前にbuttonコントロールを新規作成し、Hidden="true"を設定します.そしてbuttonのListenerイベントに具体的なClickを追加してクリックし、Handlerの方法でwindowのポップアップイベントを実現します.なぜ話が多いのかと聞かれるかもしれませんが、details関数の中でwindowのポップアップを直接実現すればいいのではないでしょうか.でも、私はやってみましたが、だめですね.
これはButtonコントロールで、Hiddenとクリックイベントを設定し、クリックしてwindowをポップアップし、FileReg_winは、ポップアップするWindowのIDです.
次に、具体的なjs関数を示します.
これにより、ハイパーリンクをクリックしてWindowをポップアップすることができます.まだ何を待っているのか,やってみよう.臨時に書いたので、きちんとレイアウトができていませんので、ご了承ください.変換元:http://www.cnblogs.com/jianglan/archive/2012/04/03/2431545.html
こちらでは、コードの一部、Gridpanelの列を示しています.赤い部分を太くすることに注意してください.
<ext:GridPanel ID="FileRegGrid" runat="server" Title=">> " StripeRows="true" Height="400"
StoreID="FileInfoStore" AutoExpandColum="list" Margins="10 20 0 20" TrackMouseOver="true">
<ColumnModel ID="ColumnModel" runat="server">
<Columns>
<ext:Column Header=" " width="80" DataIndex="ID" />
<ext:Column Header=" " width="130" DataIndex="TitleName" />
<ext:Column Header=" " width="80" DataIndex="TitleID" />
<ext:Column Header=" " Width="80" DataIndex="TitleID">
<Renderer Fn="details"/>
</ext:Column>
<ext:Column Header=" " width="130" DataIndex="FilesStatus" />
<ext:Column Header=" " width="80" DataIndex="SystemDateTime">
<Renderer Fn="Ext.util.Format.dateRenderer('Y-m-d H:i:s')" />
</ext:Column>
<ext:Column Header=" " width="80" DataIndex="OnFileDateTime">
<Renderer Fn="Ext.util.Format.dateRenderer('Y-m-d')" />
</ext:Column>
<ext:Column Header=" " width="80" DataIndex="SecretsLevelName" />
<ext:Column Header=" " width="80" DataIndex="TimeLimit" />
<ext:CommandColumn Width="60" Header=" " GroupName="Operate">
<Commands>
<ext:GridCommand Icon="Pencil" CommandName="Edit">
<ToolTip Text=" " />
</ext:GridCommand>
<ext:GridCommand Icon="Delete" CommandName="Delete">
<ToolTip Text=" " />
</ext:GridCommand>
</Commands>
</ext:CommandColumn>
</Columns>
</ColumnModel>
</ext:GridPanel>
rendererは、一般にGridにおけるカラムモデルのレンダリングにおいて、その詳細をExt.gridに記録するために用いる.ColumnModelでのsetRenderer(Number col,Function fn)メソッドにあります.renderer:function(value, cellmeta, record, rowIndex, columnIndex, store){}
含むパラメータの紹介:1.valueは現在のセルの値です.2.cellmetaに保存されているのはcellIdセルid、idは列番号、cssはこのセルのcssスタイルです.3.recordはこの行のすべてのデータです.何がほしいですか.record.data[「id」]はこれで入手できます.4.rowIndexは行番号で、最初から下に数えるという意味ではなく、ページ分け後の結果を計算しています.5.columnIndex列番号.6.store、これはすごいですね.実はこれはあなたが表を作ったときに伝えたdsです.つまり、表の中のすべてのデータを勝手に呼び出すことができます.ああ、すごいですね.
(違うよ、先輩にオノを!こちらのFnの後ろにあるのはJsの関数名です.
function details(Id) {
var temp = '<a href="Details.aspx?Id={0}" target="_blank" style="color:blue"> </a>';
return String.format(temp, Id);
}
効果図:クリックして表示して、ページをジャンプして、アドレスを通じて见ることができて、同时にIDの过去を伝えて、相応のページのジャンプをして、idの仕事を得ることができます.
次に、上記のコードを改善しました.ハイパーリンクをクリックすると、新しいページがポップアップします.
function winShow() {
question = confirm(" ?")
if (question != "0") {
window.open("ZL_IdentifyAdd.aspx", "NewWin", "status=yes, height=400, width=600");
}
}
function details(Id) {
var temp = '<a href="#" onclick="winShow()" style="color:blue"> </a>';
}
効果図
プロンプトボックスをポップアップし、「OK」をクリックして、小さなウィンドウでページを開きます.
これは、同じページのWindowを直接ポップアップできるかどうか、また新しいアイデアが出てきましたが、前からHandler=「#{window_id}.show()」;を選択してウィンドウを開きます.そこで、私は友达と討論して、彼は考えを提供して、私は試して、成功しました.大まかな考え方は、やはり列にdetailsのFunctionをトリガーするかということです.そしてdetails関数ではハイパーリンクをクリックして別の関数btnClickにジャンプし,btnClickは実装ボタンのクリックイベントである.その前にbuttonコントロールを新規作成し、Hidden="true"を設定します.そしてbuttonのListenerイベントに具体的なClickを追加してクリックし、Handlerの方法でwindowのポップアップイベントを実現します.なぜ話が多いのかと聞かれるかもしれませんが、details関数の中でwindowのポップアップを直接実現すればいいのではないでしょうか.でも、私はやってみましたが、だめですね.
これはButtonコントロールで、Hiddenとクリックイベントを設定し、クリックしてwindowをポップアップし、FileReg_winは、ポップアップするWindowのIDです.
<ext:Button ID="Link" runat="server" Hidden="true">
<Listeners>
<Click Handler="#{FileReg_win}.show();" />
</Listeners>
</ext:Button>
次に、具体的なjs関数を示します.
function details(Id) {
var temp = '<a href="#" onclick=" btnClick()" style="color:blue"> </a>';
return String.format(temp, Id);
}
function btnClick() {
document.getElementById("Link").click();
}
これにより、ハイパーリンクをクリックしてWindowをポップアップすることができます.まだ何を待っているのか,やってみよう.臨時に書いたので、きちんとレイアウトができていませんので、ご了承ください.変換元:http://www.cnblogs.com/jianglan/archive/2012/04/03/2431545.html