cgsabari
cgsabari

Reputation: 615

Getting datas from gridview for selected row?

i'm new to asp.net. i'm doing one project. in that i've used one gridview and fetch datas from database using sqldatasource. gridview code is

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
    DataSourceID="Library" CellPadding="4" ForeColor="#333333" 
    GridLines="None" OnRowDataBound="GridView1_RowDataBound" >
    <RowStyle BackColor="#EFF3FB" />
    <Columns>
        <asp:BoundField DataField="Sl_No" HeaderText="Sl_No" SortExpression="Sl_No" />
        <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
        <asp:BoundField DataField="Author" HeaderText="Author" 
            SortExpression="Author" />
        <asp:BoundField DataField="Publication" HeaderText="Publication" 
            SortExpression="Publication" />
        <asp:BoundField DataField="Available" HeaderText="Status" 
            SortExpression="Available" />
        <asp:TemplateField HeaderText="Availability">
            <ItemTemplate>
                <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("Available") %>' />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="RIUserTaken" HeaderText="RIUserTaken" 
            SortExpression="RIUserTaken" Visible="False" />
        <asp:TemplateField HeaderText="Taken By" ShowHeader="False">
            <ItemTemplate>
                <asp:Label ID="Label4" runat="server" Text='<%# Eval("RIUserTaken", "{0}") %>'></asp:Label>
                <asp:Button ID="SendRequest" runat="server" Text="Button" Visible="False" 
                    onclick="SendRequest_Click" CommandName="SendRequestCmd" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Taken Date" InsertVisible="False" 
            ShowHeader="False">
            <ItemTemplate>
                <asp:Label ID="Label3" runat="server" Text='<%# Eval("TakenDate") %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
    <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
    <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
    <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
    <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
    <EditRowStyle BackColor="#2461BF" />
    <AlternatingRowStyle BackColor="White" /> </asp:GridView>

code is one of the column of the grid view. if i click on that button, i've to store that button contains rows all datas in string variable. like string slno=""; slno=gridview1.cells[0].text; (i'm not sure it is correct or not) plz anyone help me??

thanks in advance :)

Upvotes: 1

Views: 5382

Answers (2)

user829081
user829081

Reputation: 164

From msdn, you should check this. GridView.SelectedIndexChanged event

void CustomersGridView_SelectedIndexChanged(Object sender, EventArgs e)
{
// Get the currently selected row using the SelectedRow property.
GridViewRow row = CustomersGridView.SelectedRow;

// Display the company name from the selected row.
// In this example, the third column (index 2) contains
// the company name.
MessageLabel.Text = "You selected " + row.Cells[2].Text + ".";
}

void CustomersGridView_SelectedIndexChanging(Object sender, GridViewSelectEventArgs e)
{

// Get the currently selected row. Because the SelectedIndexChanging event
// occurs before the select operation in the GridView control, the
// SelectedRow property cannot be used. Instead, use the Rows collection
// and the NewSelectedIndex property of the e argument passed to this 
// event handler.
GridViewRow row = CustomersGridView.Rows[e.NewSelectedIndex];

// You can cancel the select operation by using the Cancel
// property. For this example, if the user selects a customer with 
// the ID "ANATR", the select operation is canceled and an error message
// is displayed.
if (row.Cells[1].Text == "ANATR")
{

  e.Cancel = true;
  MessageLabel.Text = "You cannot select " + row.Cells[2].Text + ".";

}
}

Upvotes: 1

codeandcloud
codeandcloud

Reputation: 55200

Do these things

Step 1. Wire up a RowCommand Evnt to your GridView
Step 2. Inside that event at code-behind, do this

if(e.CommandName.Equals("SendRequestCmd"))
{
    var clickedRow = ((Button)e.CommandSource).NamingContainer as GridViewRow;
    // now access the cells like this
    var clickedSLNo = clickedRow.cells[0].Text;
}


Update:

e.CommandSource definition

A instance of the System.Object class that represents the source of the command.


IButtonControl.CommandArgument definition

A control that implements the IButtonControl interface must implement the CommandArgument property and the CommandName property to indicate the argument and command name that are propagated to the Command event.

Upvotes: 0

Related Questions