How can I access the the rows selected in a WebDataGrid on the server side?
For example, I have a WebDataGrid and I've enabled the Selection behavior fot it. I want the user to be able to select a row in the WebDataGrid then click a button which calls server side code to process the selected row (i.e. getting the values of some of the columns of the selected row).
I think I need to use the SelectedRowsCollection somehow, but not sure how to use it with my WebDataGrid.
Thanks,
John
Alex,
I'm one step closer, but I can't seem to read the records in the SelectedRows collection. Here's my sample code. When I run it, the selectedRow variable returns null. When I'm debugging, I do see one record selected in wdgFabric.Behaviors.Selection.SelectedRows.
Am I doing something wrong?
// inside my button_clicked method - after I've selected a row
string tmp; if (wdgFabric.Behaviors.Selection.SelectedRows.Count > 0) { foreach (GridRecord selectedRow in wdgFabric.Behaviors.Selection.SelectedRows) // errors out here with selectedRow returning null { tmp = selectedRow.Items.GetValue(1).ToString(); foreach (GridRecordItem selectedRowItem in selectedRow.Items) { Label2.Text = selectedRowItem.Text.ToString(); } } }
I am encountering the same problem. The row is alway, in my case, Nothing. I can assure you that it is really frustrating to do something so simple when it isn't working. I hope you can find my problem.
I pass you the code behind:
Protected Sub lnkbtnEditar_Clicked(ByVal sender As Object, ByVal e As EventArgs) For Each row As GridRecord In WebDataGrid1.Behaviors.Selection.SelectedRows If Not (row Is Nothing) Then Dim iCount As Integer = row.Items.Count End If NextEnd Sub
The aspx page code:
<ig:WebDataGrid ID="WebDataGrid1" runat="server" DataKeyFields="ID" StyleSetName="Claymation" AutoGenerateColumns="False" Width="260px" StyleSetPath="~/ig_res"><Columns> <ig:TemplateDataField Key="Año" Width="50px"> <ItemTemplate> <asp:Label ID="lblAño" runat="server"><%#DataBinder.Eval(CType(Container, Infragistics.Web.UI.TemplateContainer).DataItem, "Año")%></asp:Label> </ItemTemplate> <Header Text="Año" /> </ig:TemplateDataField> <ig:TemplateDataField Key="Fecha inicial" Width="81px"> <ItemTemplate> <asp:Label ID="lblIniVig" runat="server"><%#DataBinder.Eval(CType(Container, Infragistics.Web.UI.TemplateContainer).DataItem, "IniVig")%></asp:Label> </ItemTemplate> <Header Text="Fecha inicial" /> </ig:TemplateDataField> <ig:TemplateDataField Key="Fecha final" Width="81px"> <ItemTemplate> <asp:Label ID="lblFinVig" runat="server"><%#DataBinder.Eval(CType(Container, Infragistics.Web.UI.TemplateContainer).DataItem, "FinVig")%></asp:Label> </ItemTemplate> <Header Text="Fecha final" /> </ig:TemplateDataField></Columns><Behaviors> <ig:Selection RowSelectType="Single" CellClickAction="Row"> <SelectionClientEvents RowSelectionChanged="WebDataGrid1_RowSelectionChanged" /> </ig:Selection> <ig:Sorting SortingMode="Single" Enabled="true"></ig:Sorting></Behaviors></ig:WebDataGrid>
<asp:LinkButton ID="lnkbtnEditar" runat="server" CausesValidation="false" OnClick="lnkbtnEditar_Clicked">Editar</asp:LinkButton>
<script language="javascript" type="text/javascript"> function WebDataGrid1_RowSelectionChanged(webDataGrid, evntArgs) { //for the moment do nothing}</script>
{
}
the foreach does not work, i think because of the forgotten implementation of ienumerable function.
Hello,
I have the same issue.
First point
Could you tell me please the equivalance webdatagrid of this line working correctly with a GridView? :
I am not a specialist of Infragistics but I would like to know what is the mean to find in my webdatagrid the value of the first column in the row selected by the user example : 27
In my code below the row is null !!!!!
Thanks
I am going to ask that someone who is able to reproduce this issue submit an issue to Developer Support so that the issue can be tracked down. Please include a sample project that shows this issue.
I tried this from the code posted in the forum and could not reproduce this behavior.
I think the reason for getting null for the SelectedRows collection is when using a SQLDataSource as opposed to a dataset to load the WebDataGrid. I loaded data with the SQLDataSource and I can retrieve my selected row fine. When I use a dataset, the selected row is null.
Here's my source that does both the SQLDataSource & DataSet. The WebDataGrid1 uses the SQLDataSource and the WebDataGrid2 uses a dataset.
----------------------------------------------------------------------------------------
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="asp" %><%@ Register Assembly="Infragistics2.Web.v8.3, Version=8.3.20083.1009, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb" Namespace="Infragistics.Web.UI.GridControls" TagPrefix="ig" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <div> <ig:WebDataGrid ID="WebDataGrid1" runat="server" Height="350px" Width="400px" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"> <Behaviors> <ig:RowSelectors> </ig:RowSelectors> <ig:Selection CellClickAction="Row" RowSelectType="Single"> </ig:Selection> </Behaviors> <Columns> <ig:BoundDataField DataFieldName="AssemblyGroup" Key="AssemblyGroup"> <Header Text="AssemblyGroup" /> </ig:BoundDataField> <ig:BoundDataField DataFieldName="AssemblyType" Key="AssemblyType"> <Header Text="AssemblyType" /> </ig:BoundDataField> <ig:BoundDataField DataFieldName="FullChair" Key="FullChair"> <Header Text="FullChair" /> </ig:BoundDataField> </Columns> </ig:WebDataGrid> </div> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SOIApplicationsConnectionString %>" SelectCommand="spBDC_GetAssemblyGroupType" SelectCommandType="StoredProcedure"> </asp:SqlDataSource> <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> <br /> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <br /> <ig:WebDataGrid ID="WebDataGrid2" runat="server" Height="350px" Width="400px"> <Behaviors> <ig:Selection CellClickAction="Row" RowSelectType="Single"> </ig:Selection> <ig:RowSelectors> </ig:RowSelectors> </Behaviors> </ig:WebDataGrid> <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Button" /> <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> <br /> </form></body></html>
-------------------------------------------------------------------------------------------------------------------------
using System;using System.Collections.Generic;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Infragistics.Web.UI;using Infragistics.Web.UI.GridControls;using System;using System.Configuration;using System.Collections;using System.Data;public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Fill_AssemblyGroupType_Grid(); } } protected void Fill_AssemblyGroupType_Grid() { string spName = "spBDC_GetAssemblyGroupType"; WebDataGrid.DataManager myDataManager = new WebDataGrid.DataManager("MS_SQL_ConnectionString", "DatabaseType"); DataTable myDataTable = new DataTable(); myDataTable = myDataManager.GetDataTableFromSP(spName); WebDataGrid2.DataSource = myDataTable; WebDataGrid2.DataBind(); WebDataGrid2.Visible = true; } protected void Button1_Click(object sender, EventArgs e) { string tmp; if (WebDataGrid1.Behaviors.Selection.SelectedRows.Count > 0) { foreach (GridRecord selectedRow in WebDataGrid1.Behaviors.Selection.SelectedRows) // errors out here with selectedRow returning null { tmp = selectedRow.Items.GetValue(1).ToString(); Label1.Text = tmp; } } } protected void Button2_Click(object sender, EventArgs e) { string tmp; if (WebDataGrid2.Behaviors.Selection.SelectedRows.Count > 0) { foreach (GridRecord selectedRow in WebDataGrid2.Behaviors.Selection.SelectedRows) // errors out here with selectedRow returning null { tmp = selectedRow.Items.GetValue(1).ToString(); Label2.Text = tmp; } } }}
Ok It works now.
I loaded data with the SQLDataSource and I can retrieve my selected row fine. It is oK I can have the value of my row selected and put it in session variable.
Could help me for a global problem :
I would like to update my data from my ultrawebgrid to my linqdatasource.
What is the best way to put a submit button.. a special function..
Do you have some example please?
Thank for your help.