- PR -

[ASP.NET1.1(VB)]DataGrid の ページング HyperLink へ アクセス方法について

1
投稿者投稿内容
未記入
会議室デビュー日: 2008/05/21
投稿数: 3
投稿日時: 2008-05-21 13:15
お世話になります。
初めて投稿します。

開発環境は、以下の通りです。

ASP.NET(VB)
.NET Framework 1.1

DataGrid のページング機能を有効にし、
ページを移動させる HyperLink を表示させております。

この HyperLink にアクセスしたいのですが、
どのようにすれば良いのでしょうか?

作成されたHTMLソースを見てみると、
IDが付与されておりません。

IDがわかれば、
FindControlを使用してアクセスできそうですが・・・。

やりたい事は、
動的な Text の変更、Javascrpit を使用して、カーソルの設定
等です。

ご存じの方、宜しくお願いします。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-05-21 22:35
DataGridのItemCreatedイベントで
e.Item.Controls[0].Controls[2]
等とするとDataGridLinkButtonという型のコントロールが取得できます。
(eはハンドラの第2引数DataGridItemEventArgs)

ここも参考になると思います。
http://www.atmarkit.co.jp/fdotnet/dotnettips/072modpager/modpager.html

でもカスタマイズしずらそうなので私だったら自分でページャ作っちゃうかもしれません。
未記入
会議室デビュー日: 2008/05/21
投稿数: 3
投稿日時: 2008-05-22 11:31
べる様、ご返信どうもありがとうございます。

教えて頂いたページ、キーワードを元に調査いたしましたところ、
無事にアクセスできるようになりました。

参考にさせて頂いたスレッド
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=26005&forum=7&5

ただ、以下のロジックでは、DataGrid の DataBind 時、
※1の箇所を2回通過しております。ステップ実行にて確認しました。

以下のロジックをテストした時は、ページ位置を【下】に設定し、確認しましたが、
これは、ページ位置を【上下】に設定できる事から、
表示はされないが、内部的には2回実行されているという事でしょうか?

もしそうだとすると、『ページ位置【下】の時』という判定を行いたいのですが、
どのようにするのが正攻法なのでしょうか?

e.Item.Visible, e.Item.Enabled で判断できるかと思ったのですが、
共に True で判断できませんでした。

フラグ等を用いると判断はできそうですが、
これは最終手段にしたいと考えております。

ご存じの方、ご回答宜しくお願いします。


Private Sub DataGrid1_ItemCreated(ByVal sender As Object, ByVal e As
 System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemCreated

  Dim caption As String

  If e.Item.ItemType = ListItemType.Pager Then

    For Each ctrl As Control In CType(e.Item.Cells(0), TableCell).Controls '※1

      If ctrl.GetType.Name.Equals("DataGridLinkButton") Then

        caption = CType(ctrl, LinkButton).Text

      End If

    Next

  End If

End Sub
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2008-05-22 16:07
引用:
ただ、以下のロジックでは、DataGrid の DataBind 時、
※1の箇所を2回通過しております。ステップ実行にて確認しました。

以下のロジックをテストした時は、ページ位置を【下】に設定し、確認しましたが、
これは、ページ位置を【上下】に設定できる事から、
表示はされないが、内部的には2回実行されているという事でしょうか?

私も2回通るなあと思っていましたが、そういうことだったのですね。思いつきませんでした。
フラグでやってみましたがそういうことみたいです。

引用:
どのようにするのが正攻法なのでしょうか?

元々このやり方自体が正攻法でない気がするので、正攻法というのは思い浮かびません。。

引用:
e.Item.Visible, e.Item.Enabled で判断できるかと思ったのですが、
共に True で判断できませんでした。

For Each の中のctrlも全部trueですね。
未記入
会議室デビュー日: 2008/05/21
投稿数: 3
投稿日時: 2008-05-22 19:43
べる様、何度もご返信ありがとうございます。

そうですか、このやり方自体が正攻法ではないのですね、
了解しました。

前回ご回答頂いたように、自作する方向で検討したいと思います。

以上
1

スキルアップ/キャリアアップ(JOB@IT)