2017-06-16 11 views
0

ここで別のことが私の悩みになっています。私のニーズに合った答えが見つからないようです。 aspxページでは、私はSQLクエリからデータを取得し、うまく動作しているグリッドビューを作成するグリッドビューがあります。このグリッドビューでは、最初の列(列0)にはクエリから返された行番号があります。返されるグリッドビューデータには、1行または10行以上の行が存在する可能性があります。ASP.NET GridView別のGridViewへのリンク

行番号の前の列のグリッドビューにハイパーリンク/ LinkBut​​ton/Button(どちらかわからない)を追加するだけです。私は現在、私が表示することができるaspのリンクボタンでTemplateFieldを持っています。

私は理解できないようで、数日前から探していましたが、行番号を持つセルを引き出して自分のコードに渡す方法です(VB.NET)。ラインアイテムの詳細を別のグリッドビューに入力するセカンダリクエリを実行します。ここで

は、私は現在、GridViewコントロールを設定している方法です:グリッドビューの残りの部分は非常に書式設定され

<asp:GridView ID="gvDetailSecondLevel" runat="server" AutoGenerateColumns="false" Width="1010px" CellPadding="4" ForeColor="#333333" GridLines="Horizontal" CssClass="SecLvlDtl" OnRowCommand="gvDetailSecondLevel_RowCommand"> 
      <Columns> 
       <asp:TemplateField ItemStyle-VerticalAlign="Middle"> 
        <ItemTemplate> 
         <asp:LinkButton ID="btnLineDetail" runat="server" CssClass="dtlButtons" CommandName="Edit" Text="Line Detail" /> 
        </ItemTemplate> 
       </asp:TemplateField> 
       <asp:BoundField DataField="Line #" HeaderText="Line #" /> 
       <asp:BoundField DataField="Part Desc" HeaderText="Part Description" /> 
       <asp:BoundField DataField="PCS" HeaderText="PCS" /> 
       <asp:BoundField DataField="WT" HeaderText="WT" /> 
       <asp:BoundField DataField="SF" HeaderText="SF" /> 
      </Columns> 

私は簡潔にするためにそれをリストしませんでした。次のように

(私はそれがエラーをスローしますので、間違っていると確信している)の背後にある現在のコードは次のとおりです。

Protected Sub gvDetailSecondLevel_RowCommand(sender As Object, e As GridViewCommandEventArgs) 
    'Setup Variables 
     Dim lineNumber As String = gvDetailSecondLevel.Rows(sender.RowIndex).Cells(0).Text 

     'Make controls visibile 
     btnClear.Visible = True 
     SOThirdLevel.Visible = True 

     'Retrieve Thrid Level SQL Data 
     bindThirdLevel(lineNumber) 
    End Sub 

スローされますエラーが型 『のGridView』の「公開メンバー 『rowIndexに』ではないと言います見つかった "

2番目のグリッドビューが同じページにあるdivタグ内にあることにも言及してください。私は別のapsxページにジャンプしようとしていません。 (私はちょうどそれを行うことができます)

だから、私はそれを処理することができるようにコードの後ろに渡される行番号のセルデータを取得する方法を見つけることです。

誰でも意見はありますか?

ご協力いただきありがとうございます。

答えて

0

行インデックスを取得するには、GridViewCommandEventArgsオブジェクト(e)を使用する必要があります。

Convert.ToInt32(e.CommandArgument) 

また、セル(0)はリンクボタンを含むセルを提供します。したがって、行番号を取得する行は次のようになります。

Dim lineNumber As String = gvDetailSecondLevel.Rows(Convert.ToInt32(e.CommandArgument)).Cells(1).Text 
+0

これはコードのRowEditingサブフォームにあるはずですか?なぜなら、パブリックオーバーライドは、TableCellCollectionにパラメータがなく、その戻り値の型を索引付けできないため、Readonlyプロパティのセルをオーバーロードするというエラーが表示されるからです。これは私が間違ったサブを使用していると思います??? – mbcharney

+0

サブクラスに基づいて(あなたのハンドル節は含まれていませんでした)、私はそれがあなたのRowCommandイベント(リンクボタンがクリックされたときに起動するはずです)で起こっていると仮定しました。 – Wenadin

0

これが最終的に動作する方法です。

'Get RowIndex 
    Dim rowIndex As Integer = Convert.ToInt32(e.CommandArgument) 

    'Reference Grid View Row 
    Dim row As GridViewRow = gvDetailSecondLevel.Rows(rowIndex) 

    'Get Cell value 
    Dim lineNumber As String = row.Cells(1).Text 

私は変数lineNumberを私のサブに渡すことができました。これは今すぐうまくいきます! ポインタのWenadinに感謝します!