0

システムの Demands テーブル (DemandFiche のようなテーブル名) をバインドするグリッドビューがあります。同時に、フィッシュ レコードの詳細 (DemandFicheDetails のようなテーブル名) を保持するフィッシュ レコード詳細テーブルがあります (また、DemandFicheDetails テーブルの DemandFiche テーブルの「ID」を「DemandFicheID」として保持します。これら 2 つのテーブル)

選択した行をダブルクリックし、選択したレコードの詳細を表示するための ID 値を別のページ (DemandsDetailForm) に渡したいと考えています。

ところで、私はasp.net 4.5とエンティティフレームワークを使用しています。

どうやってやるの?ありがとう。

aspx コード (DemandsForm.aspx) は次のとおりです。

        <div>
    <asp:GridView runat="server" OnSelectedIndexChanged="DemandsGridView_SelectedIndexChanged"  OnRowDataBound="DemandsGridView_RowDataBound" Width="1300px" AllowPaging="True" AllowSorting="True" ID="GridView1" DataSourceID="DemandsEntityDataSource" AutoGenerateColumns="False">
        <AlternatingRowStyle BackColor="#CCCCCC" />
        <SelectedRowStyle BackColor="Yellow" />
        <Columns>
            <asp:BoundField DataField="ID" Visible="False" />
            <asp:BoundField DataField="DATE_" HeaderText="Date" Visible="True" DataFormatString="{0:dd/MM/yyyy}" />
            <asp:BoundField DataField="FICHENO" HeaderText="Fiche No" Visible="True" />
            <asp:BoundField DataField="DOCODE" HeaderText="Docode" Visible="True" />
            <asp:BoundField DataField="STATUS" HeaderText="Status" Visible="True" />
            <asp:BoundField DataField="BRANCH" HeaderText="Branch" Visible="True" />
            <asp:BoundField DataField="DEPARTMENT" HeaderText="Department" Visible="True" />
            <asp:BoundField DataField="SOURCEINDEX" HeaderText="Sourceindex" Visible="True" />
            <asp:BoundField DataField="FACTORY" HeaderText="Factory" Visible="True" />
        </Columns>
        <EditRowStyle ForeColor="#CC3300" />
    </asp:GridView>
    <asp:EntityDataSource ID="DemandsEntityDataSource" runat="server" ConnectionString="name=PmsEntities" DefaultContainerName="PmsEntities" EntitySetName="PMS_DEMANDSVIEW" EntityTypeFilter="PMS_DEMANDSVIEW">
    </asp:EntityDataSource>
</div>

そして、ここにコードビハインドがあります:

    public partial class DemandsForm : System.Web.UI.Page
{
    public DemandsDetailForm DemandsDetailForm;
    private PmsEntities dbContext;

    protected void Page_Load(object sender, EventArgs e)
    {
        dbContext = new PmsEntities();
    }

    protected void DemandsGridView_SelectedIndexChanged(object sender, EventArgs e)
    {

    }

    protected void DemandsGridView_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            e.Row.Attributes.Add("OnMouseOver", "this.style.cursor = 'hand';");

            var selectButton = new LinkButton()
            {
                CommandName = "Select",
                Text = e.Row.Cells[0].Text
            };

            selectButton.Font.Underline = false;
            selectButton.ForeColor = Color.Black;

            e.Row.Cells[0].Controls.Add(selectButton);
            //e.Row.Attributes["OnClick"] = Page.ClientScript.GetPostBackClientHyperlink(selectButton, "");
            e.Row.Attributes["onclick"] = ClientScript.GetPostBackClientHyperlink(DemandsGridView, "Select$" + e.Row.RowIndex);

            e.Row.Attributes.Add("ondblclick", "__doPostBack('DemandsGridView','Select$" + e.Row.Cells[0] + "');");
        }
    }
}
4

3 に答える 3

0

Monitor the clicks using javascript and then simply redirect to the page you need. You can pass the ID either as part of the URL or using a cookie for instance...

于 2013-10-21T14:27:45.203 に答える
0

これが私の解決策です。ボタンをクリックします(ダブルクリックではありません)

DemandsForm.aspx.cs

        protected void detailsButton_Click(object sender, EventArgs e)
    {
        ids = Convert.ToString(DemandsGridView.SelectedRow.Cells[0].Text);

        Response.Redirect("~/Demand/DemandsDetailForm.aspx?ID=" + ids);
    }

DemandsDetailForm.aspx.cs

DemandFicheRef = int.Parse(Request.QueryString["ID"]);

コマンドとアイデアをありがとう。

于 2013-10-22T12:27:39.847 に答える