get rowid in gridview

I have a gridview and want to capture the rowid so I can pass it as a parameter in a query string. Below is my code thus far and it is only working for the first row and not the others rows.
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            CellPadding="4" DataKeyNames="ReqId" DataSourceID="SqlDataSource1" 
            ForeColor="#333333" GridLines="None" AllowPaging="True" 
            AllowSorting="True" 
            OnSelectedIndexChanged="GridView1_SelectedIndexChanged" 
            onpageindexchanged="GridView1_PageIndexChanged" 
            >
            <RowStyle BackColor="#EFF3FB" />
            <Columns>
                <asp:CommandField ShowSelectButton="True" />
                <asp:BoundField DataField="ReqId" HeaderText="Requisition Id" 
                    SortExpression="ReqId" Visible="true" />
 
 
<asp:LinkButton ID="lnkbtnChangeReq" runat="server" 
                onclick="lnkbtnChangeReq_Click">Change Requisition</asp:LinkButton>
 
 
protected void lnkbtnChangeReq_Click(object sender, EventArgs e)
    {
        //GridView1
        string rowId = GridView1.DataKeys[0].Value.ToString();
        //try to prevent url tampering
        Random random = new Random();
        int num = random.Next(1000); //random number that means nothing
        string strq = "m"; //modify for close of req
        //build querystring
        string url = "updaterequisition.aspx?";
        url += "rid=" + rowId + "&";
        url += "svd=" + num + "&";
        url += "sr=" + strq;
        Response.Redirect(url);
    }

Open in new window

fwstealerAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Bob HoffmanDeveloperCommented:
look at the ItemDataBound event. You can use e.Row to build the link reference when the grid is being bound.
0
prairiedogCommented:
Is "lnkbtnChangeReq" defined inside the GridView or outside?
0
jinalCommented:
First my question lnkbtnChangeReq is out side GridView or inside grdiview.

1. IF out side.




protected void lnkbtnChangeReq_Click(object sender, EventArgs e)
    {
        //GridView1
        string rowId = GridView1.DataKeys[GridView1.SelectedRow.RowIndex].Value.ToString();
        //try to prevent url tampering
        Random random = new Random();
        int num = random.Next(1000); //random number that means nothing
        string strq = "m"; //modify for close of req
        //build querystring
        string url = "updaterequisition.aspx?";
        url += "rid=" + rowId + "&";
        url += "svd=" + num + "&";
        url += "sr=" + strq;
        Response.Redirect(url);
    }

Open in new window

0
Cloud Class® Course: Microsoft Windows 7 Basic

This introductory course to Windows 7 environment will teach you about working with the Windows operating system. You will learn about basic functions including start menu; the desktop; managing files, folders, and libraries.

jinalCommented:
It is better to check SelectedRow is null or not.

protected void lnkbtnChangeReq_Click(object sender, EventArgs e)
    {
        //GridView1
        if(GridView1.SelectedRow != null)
        {
        string rowId = GridView1.DataKeys[GridView1.SelectedRow.RowIndex].Value.ToString();
        //try to prevent url tampering
        Random random = new Random();
        int num = random.Next(1000); //random number that means nothing
        string strq = "m"; //modify for close of req
        //build querystring
        string url = "updaterequisition.aspx?";
        url += "rid=" + rowId + "&";
        url += "svd=" + num + "&";
        url += "sr=" + strq;
        Response.Redirect(url);
       }
    }

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
fwstealerAuthor Commented:
lnkbtnChangeReq is outside of the gridview.
0
jinalCommented:
Try my previos two comments. it helps you.
0
prairiedogCommented:
Here is what you need to do:

protected void lnkbtnChangeReq_Click(object sender, EventArgs e)
    {
        //GridView1
        GridViewRow row = (GridViewRow)(sender.NamingContainer);
        string rowId = GridView1.DataKeys[row.RowIndex].Value.ToString();
        //try to prevent url tampering
        Random random = new Random();
        int num = random.Next(1000); //random number that means nothing
        string strq = "m"; //modify for close of req
        //build querystring
        string url = "updaterequisition.aspx?";
        url += "rid=" + rowId + "&";
        url += "svd=" + num + "&";
        url += "sr=" + strq;
        Response.Redirect(url);
    }

Open in new window

0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
ASP.NET

From novice to tech pro — start learning today.