Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 834
  • Last Modified:

Assigning a datagrid row item to a label

I'd like to assign a data item on a grid row to a label when it's selected. I used the following, but I receive the error:

System.Web.UI.WebControls.GridViewRow

Code:

      Protected Sub grdPromo_SelectedIndexChange(ByVal sendar As Object, ByVal e As System.EventArgs)
            lblStore.Text = grdPromo.Rows.Item(2).ToString
      End Sub

Any suggestions? Thanks.

Open in new window

0
barnesco
Asked:
barnesco
2 Solutions
 
anoyesCommented:
You haven't specified which row to get the item from.  For example, to reference the third column in the second row, use lblStore.Text = grdPromo.Rows(1).Item(2).ToString

Or to base the row off the selection of the gridview, use lblStore.Text = grdPromo.Rows(grdPromo.SelectedIndex).Item(2).ToString
0
 
barnescoAuthor Commented:
The second is more for what I need,

lblStore.Text = grdPromo.Rows(grdPromo.SelectedIndex).Item(2).ToString

but I'm receiving the error: 'Item' is not a member of System.Web.UI.WebControls.GridViewControls
0
 
anoyesCommented:
Sorry, my bad.

lblStore.Text = grdPromo.Rows(grdPromo.SelectedIndex).Cells(2).Text
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
yossi_intlockCommented:
to get a specific value in a row use: GridView1.Rows(GridView1.SelectedIndex).Cells(2).Text
the cell index is your datafield index. if you are using templated fields than youll have to fnd you control for example if you have a field like that  :
<asp:TemplateField HeaderText="CFTITLE" SortExpression="CFTITLE">
                    <EditItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("CFTITLE") %>'></asp:TextBox>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("CFTITLE") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
use
Dim lbl As Label = GridView1.Rows(GridView1.SelectedIndex).FindControl("Label1")
        Dim myText As String = lbl.Text

to get your value directly from your datasource - add a datakeyfield to ur gridview than get this key by the selected row index
Dim key As DataKey = GridView1.DataKeys(GridView1.SelectedIndex)
        Dim keyValue As String = key.Value
and than find your datarow (in the datasource) by this key
DataTable1.select("key='keyValue'") as datarow
0
 
barnescoAuthor Commented:
It's still not returning a value. The index seems right, returning the correct row, and I've tried all the cell values possible, but no values are being returned.
0
 
digitalZoCommented:
How are you selecting the row? Have you given any checkbox or select button or something to select the row?

Check out this:
http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.selectedindexchanged.aspx

The SelectedIndexChanged event is raised when a row's Select button is clicked, but after the GridView control handles the select operation
0
 
barnescoAuthor Commented:
That's exactly the site I looked up last night, and there is a select row in the grid. In fact, it calls another grid to display a detailed view (I just need a label to display the view).  I have

<asp:GridView ID="grdPromo" OnSelectedIndexChanged="grdPromo_SelectedIndexChange" ... />

and

      Protected Sub grdPromo_SelectedIndexChange(ByVal sendar As Object, ByVal e As EventArgs)
            Dim row As GridViewRow = grdPromo.SelectedRow
            lblStore.Text = row.Cells(2).Text         'grdPromo.Rows(grdPromo.SelectedIndex).Cells(2).Text
      End Sub

(I commented out what was suggested before). I've tried different cell positions, nevertheless, 2 should be right, being the third cell). When I perform a debug, the count shows correctly (7), but item shows "Item = In order to evaluate an indexed property, the property must be qualified and the arguments must be explicitly supplied by the user."

Could that be something?
0
 
barnescoAuthor Commented:
I apologize. I'm using DotNetNuke and it must have something to do with how it returns data--I just tried the above code in another environment, and it works great.

Thank you, all, for your contributions. They were very helpful.
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now