This is a migrated thread and some comments may be shown as answers.

how do I programmatically setup a control parameter?

2 Answers 203 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Aaron
Top achievements
Rank 1
Aaron asked on 20 Feb 2009, 04:13 PM

Hi All,
I am trying to create a webpart for MOSS using two radgrids and two sqldatasources, where the second shows details of the first.
The control parameter of the second datasource should be the selected value of this first grid.
The problem is when I click on a row in the first grid, nothing happens in the second which has led me to believe it is something to do with the control parameter.
Can someone help me determine the problem?
Thanks.
Aaron

        RadAjaxPanel pnlWorkOrders;  
        RadGrid rgOrders;  
        RadGrid rgDetails;  
        SqlDataSource dsOrders;  
        SqlDataSource dsDetails;  
 
        protected override void CreateChildControls()  
        {  
            pnlWorkOrders = new RadAjaxPanel();  
            rgOrders = new RadGrid();  
            rgDetails = new RadGrid();  
            dsOrders = new SqlDataSource();  
            dsDetails = new SqlDataSource();  
 
            dsOrders.ID = "dsOrders";  
            dsOrders.ProviderName = "System.Data.SqlClient";  
            dsOrders.ConnectionString="Data Source=cdshelp;Initial Catalog=TRACKIT70_DATA2;User ID=web_TrackItReader;Password=TRACK11!";  
            dsOrders.SelectCommand="SELECT [WO_NUM], [TASK], [REQUEST], [REQDATE], [DUEDATE], [RESPONS] FROM [TASKS] WHERE ([STATUS] <> @STATUS) AND (REQDATE > @DateNow)";  
            dsOrders.SelectParameters.Add("STATUS"""Completed"");  
            dsOrders.SelectParameters.Add("DateNow",DbType.DateTime,"01/01/2008");  
 
            dsDetails.ID = "dsDetails";  
            dsDetails.ProviderName = "System.Data.SqlClient";  
            dsDetails.ConnectionString="Data Source=cdshelp;Initial Catalog=TRACKIT70_DATA2;User ID=web_TrackItReader;Password=TRACK11!";  
            dsDetails.SelectCommand="SELECT [WO_NUM], [TASK], [DESCRIPT], [NOTE] FROM [TASKS] WHERE ([WO_NUM] = @WO_NUM)";  
            dsDetails.SelectParameters.Add(new ControlParameter("WO_NUM""rgOrders","SelectedValue"));  
 
            rgOrders.ID = "rgOrders";  
            rgOrders.DataSourceID="dsOrders";  
            rgOrders.MasterTableView.DataKeyNames = new string[] { "WO_NUM" };
          
            
            rgOrders.ClientSettings.EnablePostBackOnRowClick = true;  
            rgOrders.ClientSettings.Selecting.AllowRowSelect = true;  
 
            rgDetails.ID = "rgDetails";  
            rgDetails.DataSourceID="dsDetails";  

            rgOrders.AutoGenerateColumns = false;  
            GridBoundColumn wo = new GridBoundColumn();  
            wo.HeaderText = "Work Order #";  
            wo.UniqueName = "WO_NUM";  
            wo.DataField = "WO_NUM";  
            GridBoundColumn ta = new GridBoundColumn();  
            ta.HeaderText = "Task";  
            ta.UniqueName = "TASK";  
            ta.DataField = "TASK";  
            GridBoundColumn rq = new GridBoundColumn();  
            rq.HeaderText = "Requested By";  
            rq.UniqueName = "REQUEST";  
            rq.DataField = "REQUEST";  
            GridBoundColumn dc = new GridBoundColumn();  
            dc.HeaderText = "Date Requested";  
            dc.UniqueName = "REQDATE";  
            dc.DataField = "REQDATE";  
            GridBoundColumn dd = new GridBoundColumn();  
            dd.HeaderText = "Due Date";  
            dd.UniqueName = "DUEDATE";  
            dd.DataField = "DUEDATE";  
            rgOrders.Columns.Add(wo);  
            rgOrders.Columns.Add(ta);  
            rgOrders.Columns.Add(rq);  
            rgOrders.Columns.Add(dc);  
            rgOrders.Columns.Add(dd);  
 
            rgDetails.AutoGenerateColumns = false;  
            GridBoundColumn ds = new GridBoundColumn();  
            ds.HeaderText = "Description";  
            ds.UniqueName = "DESCRIPT";  
            ds.DataField = "DESCRIPT";  
            ds.HeaderStyle.Width = Unit.Percentage(50);  
            ds.ItemStyle.VerticalAlign = VerticalAlign.Top;  
            ds.ItemStyle.HorizontalAlign = HorizontalAlign.Left;  
            GridBoundColumn nt = new GridBoundColumn();  
            nt.HeaderText = "Notes";  
            nt.UniqueName = "NOTE";  
            nt.DataField = "NOTE";  
            nt.HeaderStyle.Width = Unit.Percentage(50);  
            nt.ItemStyle.VerticalAlign = VerticalAlign.Top;  
            nt.ItemStyle.HorizontalAlign = HorizontalAlign.Left;  
 
            pnlWorkOrders.Width = Unit.Percentage(100);  
            pnlWorkOrders.Height = Unit.Percentage(100);  
            pnlWorkOrders.Controls.Add(dsOrders);  
            pnlWorkOrders.Controls.Add(dsDetails);  
            pnlWorkOrders.Controls.Add(rgOrders);  
            pnlWorkOrders.Controls.Add(rgDetails);  
            this.Controls.Add(pnlWorkOrders);  
        } 

 

2 Answers, 1 is accepted

Sort by
0
Aaron
Top achievements
Rank 1
answered on 20 Feb 2009, 06:45 PM
So I added a dsDetails.Selecting += new SqlDataSourceSelectingEventHandler(dsDetails_Selecting);

 


and this line:

 


void
dsDetails_Selecting(object sender, SqlDataSourceSelectingEventArgs e)

 

{

e.Command.Parameters[

"@WO_NUM"].Value = rgOrders.SelectedValue.ToString();

 

}

and although it registers the parameter and rgOrders it still gives me an "Object reference not set to an instance of an object." error.

0
Yavor
Telerik team
answered on 24 Feb 2009, 08:34 AM
Hi Aaron,

You may want to make sure that  rgOrders.SelectedValue.ToString();  does indeed return a value at all times. For example, when the controls are first rendered, there may be no selected item(s) in the first grid, and hence the exception.

Kind regards,
Yavor
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
Tags
Grid
Asked by
Aaron
Top achievements
Rank 1
Answers by
Aaron
Top achievements
Rank 1
Yavor
Telerik team
Share this question
or