0

グリッドビューがあり、行セルから別のページに値を渡したいです。文字列である値に基づいて、特定のクエリを実行し、別のグリッドビューを埋めることができます。私の問題は、行をダブルクリックしても値が取得されないことですが、行セルのインデックスを変更すると、行内の他の列の値が取得されます。さらに情報が必要な場合はお知らせください。

protected void grdCowCard_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        string querystring = string.Empty;
        string id = e.Row.Cells[1].Text;

        //Session["selectedLactationEvent"] = "MMR";
        e.Row.Attributes["ondblclick"] = string.Format("doubleClick({0})", id);
        //won't pick up the value("MMR") at Row.Cells[1]
        //but will pick up the value("1") at Row.Cells[0]
    }
}

<script type="text/javascript">
    function doubleClick(queryString) {
        window.location = ('<%=ResolveUrl("LactationDetails.aspx?b=") %>' + queryString);
    }
</script>

値はこのセッションに基づいて取得し、グリッドビューを埋めるために使用する方法を決定するために使用する必要があります。

Session["selectedLactationEvent"] = Request.QueryString["b"].ToString();

//string test = (string)(Session["selectedLactationEvent"]);
if ((string)(Session["selectedLactationEvent"]) == "MMR")
    GetExtraMMRdetails();
else if ((string)(Session["selectedLactationEvent"]) == "LAC")
    GetExtraLACdetails();
else
    GetExtraEBIdetails();
4

1 に答える 1

0

ダブルクリック イベントを使用する代わりに、グリッドビューにボタン フィールドを追加し、OnRowCommand イベントを作成しました。EventID と EventType (値を取得する必要があるグリッドビューの 2 つの列) を DataKeyNames にしました。コード ビハインドでは、OnRowCommand イベントで、選択された行のインデックスを取得し、その行の EventID と EventType の値を取得します。URL で QueryString を使用して値を渡しました。LactationDetails ページで、クエリ文字列をリクエストし、値を使用します...

<asp:GridView ID="grdCowCard" runat="server" Width="100%" 
        DataKeyNames="EventID,EventType" HeaderStyle-BackColor="#008B00" 
        OnRowCreated="grdCowCard_RowCreated" Caption="Lactation Records" 
        OnRowCommand="grdCowCard_RowSelected">
        <Columns>
          <asp:ButtonField Text="Select" CommandName="Select"/>  
        </Columns>
    </asp:GridView>

protected void grdCowCard_RowSelected(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Select")
    {
        int RowIndex = int.Parse(e.CommandArgument.ToString());// Current row

        string id = grdCowCard.DataKeys[RowIndex]["EventID"].ToString();
        string eventType1 = grdCowCard.DataKeys[RowIndex]["EventType"].ToString();

        //grdCowCard.Attributes["ondblclick"] = string.Format("doubleClick({0})", id, eventType1);

        //id and eventType are passed to LactationDetails page, and used to determine which 
        //method to use and what data to retrieve
        Response.Redirect("LactationDetails.aspx?b=" + id + "&c=" + eventType1);
    }
}

授乳詳細ページ

Session["selectedMilkid"] = Request.QueryString["b"].ToString();
    string selectedEventType = Request.QueryString["c"].ToString();
于 2012-07-27T16:09:58.427 に答える