0

我有一个gridview,我绑定了我系统的Demands 表(表名如DemandFiche)。同时,有一个 fiche 记录详细信息表,我保存我的 fiche 记录详细信息(表名称,如 DemandFicheDetails)(另外我在 DemandFicheDetails 表中将我的 DemandFiche 表“ID”保留为“DemandFicheID”。所以之间存在联系这两张表)

我想双击选定的行并将 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

使用链接按钮的 Postbackurl 属性将值发送到其他页面。

lnkRedirect.PostBackUrl = "~/MyDefault.aspx?id=" & Base64Encode(dataItem("id").Text
于 2013-10-21T15:19:51.137 回答
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 回答