I'm using the new V10.2 controls, Visual Studio 2008. I just need to get the row of the cell selected, then use that to get a value from the same row. I have problems with both of those things - I have comment lines in ALL CAPS above my problem lines in the javascript.
Here's the source:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="AdvancedHomeCare._Default" %>
<%@ Register Assembly="Infragistics35.Web.v10.2, Version=10.2.20102.1011, Culture=neutral, PublicKeyToken=7DD5C3163F2CD0CB" Namespace="Infragistics.Web.UI.GridControls" TagPrefix="ig" %>
<%@ Register assembly="Infragistics35.WebUI.WebDataInput.v10.2, Version=10.2.20102.1011, Culture=neutral, PublicKeyToken=7dd5c3163f2cd0cb" namespace="Infragistics.WebUI.WebDataInput" tagprefix="igtxt" %>
<!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>
<base target="_parent" />
<script type="text/javascript" id="igClientScript">
<!--
function grdJobs_Selection_CellSelectionChanged(sender, eventArgs) {
//get the grid
grid = $find('grdJobs');
//find the row selected
//THE FOLLOWING LINE DOES NOT WORK
var row = eventArgs.currentSelectedCells(0).Row.Index;
//I NEED THE ROW, THEN THE VALUE OF THE COLUMN intJobId (column 9)
//DON'T KNOW IF THIS IS CORRECT EITHER
var job = grid.Rows(row).Items(9).Value;
var url = 'jobdetails.aspx?id=' + job
window.location = url;
}
// -->
</script>
</head>
<body>
<form id="form1" runat="server" style="width: 241px">
<div>
</div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<ig:WebDataGrid ID="grdJobs" runat="server" Height="250px" StyleSetName="AHC" Width="240px"
DataSourceID="dataJobs" AutoGenerateColumns="False" BorderStyle="None" BackColor="White"
EnableAjax="False">
<Behaviors>
<ig:Filtering Visibility="Hidden">
</ig:Filtering>
<ig:EditingCore AutoCRUD="False" Enabled="False">
</ig:EditingCore>
<ig:Activation Enabled="False">
<AutoPostBackFlags ActiveCellChanged="true" />
</ig:Activation>
<ig:Selection CellClickAction="Cell" RowSelectType="Single">
<AutoPostBackFlags CellSelectionChanged="true" />
<SelectionClientEvents CellSelectionChanged="grdJobs_Selection_CellSelectionChanged" />
</ig:Selection>
</Behaviors>
<Columns>
<ig:BoundDataField DataFieldName="Profession" Key="Profession" Width="38%">
<Header Text="Profession" />
</ig:BoundDataField>
<ig:BoundDataField DataFieldName="Skill" Hidden="True" Key="Skill">
<Header Text="BoundColumn_1" />
<ig:BoundDataField DataFieldName="Setting" Hidden="True" Key="Setting">
<Header Text="BoundColumn_2" />
<ig:BoundDataField DataFieldName="Shift" Hidden="True" Key="Shift">
<Header Text="BoundColumn_3" />
<ig:BoundDataField DataFieldName="Schedule" Hidden="True" Key="Schedule">
<Header Text="BoundColumn_0" />
<ig:BoundDataField DataFieldName="JobOpeningType" Hidden="True" Key="JobOpeningType">
<Header Text="BoundColumn_4" />
<ig:BoundDataField DataFieldName="City" Key="City" Width="40%">
<Header Text="City" />
<ig:BoundDataField DataFieldName="StateAbbrev" Key="StateAbbrev" Width="22%">
<Header Text="State" />
<ig:BoundDataField DataFieldName="Pay" Hidden="True" Key="Pay">
<Header Text="BoundColumn_7" />
<ig:BoundDataField DataFieldName="intJobId" Hidden="True" Key="intJobId">
</Columns>
</ig:WebDataGrid>
<asp:SqlDataSource ID="dataJobs" runat="server" ConnectionString="<%$ ConnectionStrings:AlexisConnectionString %>"
SelectCommand="usp_JobBoard_GetJobs" SelectCommandType="StoredProcedure" EnableCaching="True"
CacheDuration="Infinite">
<SelectParameters>
<asp:SessionParameter DefaultValue="** Not Selected **" Name="Profession" SessionField="Profession" />
<asp:SessionParameter DefaultValue="'**'" Name="State" SessionField="StateAbbrev" />
<asp:SessionParameter DefaultValue="'** Not Selected **'" Name="JobType" SessionField="JobOpeningType" />
<asp:SessionParameter DefaultValue="'** Not Selected **'" Name="Setting" SessionField="Setting" />
<asp:Parameter DefaultValue="0" Name="JobRanking" Type="Int32" />
<asp:SessionParameter DefaultValue="1" Name="PageNumber" SessionField="pageCurrent"
Type="Int32" />
<asp:Parameter DefaultValue="4" Name="JobsPerPage" Type="Int32" />
<asp:SessionParameter DefaultValue="Pay" Name="SortBy" SessionField="SortBy" Type="String" />
<asp:Parameter DefaultValue="4" Name="OverrideType" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
I read through this posting and was able to get your sample code working in my project (I took into account the "getSelectedCells()" reference instead of the "currentSelectedCells()") It worked fine when using the regular click event for individual cells.
Now I have a similar requirement but this time I have a WebDataGrid where users will select the entire row at a time (CellClickAction = "Row"), and on double-clicking I need to retrieve a value from the selected row. I added the "<ClientEvents DoubleClick="xxx"> markup and it called my test JavaScript function as below:
function xxx { alert('Hello'); }
But when I try to add the "sender" and EventArgs to the JS function, the call fails. How do I wire up the function for double-clicks so that I can get the required row value?
Man.... I read it too and i still typed it in wrong. It works perfect now. Thanks.
Hey,
Your code for getting selected cell is wrong. It needs to be:
var newSelectedCell = e.getSelectedCells().getItem(0);
regards,
Dave
Here is the webDataGrid in the ASPX page:
<div> <ig:WebDataGrid ID="WebDataGrid1" runat="server" Height="400px" Width="600px" StyleSetPath="~/App_Themes" StyleSetName="RubberBlack"> <Behaviors> <ig:ColumnMoving></ig:ColumnMoving> <ig:ColumnResizing></ig:ColumnResizing> <ig:Selection CellClickAction="Cell" RowSelectType="Single"> <AutoPostBackFlags CellSelectionChanged="true" /> <SelectionClientEvents CellSelectionChanged="fileGrid_CellSelectionChanged" /> </ig:Selection> </Behaviors> </ig:WebDataGrid></div>
And here is the JS function i am firing on a selection event:
<script type="text/javascript" id="igClientScript"> <!-- function fileGrid_CellSelectionChanged(sender, e){ // var tabley = $find('WebDataGrid1'); var newSelectedCell = e.currentSelectedCells().getItem(0); alert('made it here'); //var row = newSelectedCell.get_row(); //var rowIndex = row.get_index(); //var col = newSelectedCell.get_column(); //var job = row.get_cell(0).get_value(); //window.location='../files/filemanagement.aspx?x=' + job; } // --> </script>
Never make it to the alert, function returns the object error instead.
What is the code that is throwing the exception?
-Dave