开发者

passing an ID between pages

I have a Default.aspx page in which I have bind a Grid. In the Grid is a button named Details.

I also have a Details.aspx which has a GridView. If I click the button that exist in Default.aspx, there appears an Details.aspx page which appears empty.

When click the Detail button of a specific row, there appears the details of that button clicked. I am not understanding on how to pass the ID to Details.aspx.

Can anybody guide me to this please?

Details.aspx

<asp:GridView ID="DetailsGridView" runat="server" BackColor="White" AutoGenerateColumns="false" 
            BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="1px" CellPadding="4" DataKeyNames="ID"
            ForeColor="Black" GridLines="Vertical">
          <FooterStyle BackColor="#CCCC99" />
        <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
        <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
        <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
        <AlternatingRowStyle BackColor="White" />
        </asp:GridView>

Default.aspx:

            <Columns>
                <asp:BoundField HeaderText="First Name" DataField="FirstName" />
                <asp:BoundField HeaderText="Last Name" DataField = "LastName" />
                <asp:BoundField HeaderText="HomePho开发者_运维技巧neNumber" DataField="HomePhoneNumber" />
                <asp:TemplateField HeaderText="ViewDetails">
                <ItemTemplate>
                <asp:Button ID="Deatils" runat="server" Text="Details" />
                </ItemTemplate>    

                </asp:TemplateField>

                <asp:TemplateField HeaderText="Actions">
                <ItemTemplate>
                <asp:Button ID="Modify" runat="server" Text="Modify" />
                <asp:Button ID="Delete" runat="server" Text="Delete" />

                </ItemTemplate>
                </asp:TemplateField>                   
            </Columns>


            <FooterStyle BackColor="#CCCC99" />
            <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
            <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
            <AlternatingRowStyle BackColor="White" />
        </asp:GridView>
    </div>

JavaScript

<script type="text/javascript">
function viewProfile(index)
{
        var GridID = document.getElementById("PersonGridView");
        var row=GridID.rows[parseInt(index)+1];
        window.open('Details.aspx?coaid'+row);
}
</script>

Code Behind of Default.aspx:

protected void PersonGridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                var DataKeys = PersonGridView.DataKeys[e.Row.RowIndex];
                DataKeys.Value.ToString();
                var ID = DataKeys["ID"].ToString();
                Button btnDetails = (Button)e.Row.FindControl("Deatils");
                Button btnModify = (Button)e.Row.FindControl("Modify");
                Button btnDelete = (Button)e.Row.FindControl("Delete");
                btnModify.CommandName = "Modify";
                btnDelete.CommandName = "Delete";
                btnDetails.CommandName = "Deatils";
                btnDelete.CommandArgument = btnModify.CommandArgument = btnDetails.CommandArgument = string.Format("{0}", ID);
                btnDetails.Attributes["onclick"] = string.Format("viewProfile({0}); return false;", e.Row.RowIndex);
            }
        }


EDIT: I've modified my example to not use a HyperLink and instead will build a LinkButton that can navigate to your Details.aspx page passing the ID value in the QueryString:

Default.aspx:

<asp:TemplateField>
    <ItemTemplate>
        <asp:LinkButton CommandName="Details" CommandArgument='<%# Eval("ID") %>' Text="Details" runat="server" />
    </ItemTemplate>
</asp:TemplateField>

Default.aspx.cs:

protected void PersonGridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if (e.CommandName == "Details")
    {
        Server.Transfer("Details.aspx?ID=" + e.CommandArgument.ToString());
    }
}


On the Grid when you click the button

do the following

public protected sub Button_Click(EventArgs e)
{

if (grid.SelectedItem != null)
{

var selectedRow = grid.SelectedItem ;

// do what ever you want to Selected Row that may be binding it to another Form etc.
}

Do the same for OnSelectedEvent if you want to do it that way instead.

public protected sub OnSelectedEvent_Click(EventArgs e)
{

if (grid.SelectedItem != null)
{

var selectedRow = grid.SelectedItem ;

// do what ever you want to Selected Row that may be binding it to another Form etc.
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜