Solved

trying to avoid System.ArgumentOutOfRangeException dropdown list in a datagrid

Posted on 2006-06-22
3
867 Views
Last Modified: 2007-12-19
hello dear experts,
i have  a problem with a dropdown list in a datagrid, basically i am trying to avoid the:
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. Parameter name: value
Source Error:
Line 67:                         
Line 68:                         BOMDataGrid.DataSource = DS.Tables["BOM"];
Line 69:                         BOMDataGrid.DataBind();      ----> marked red

after readings some replies here i added the GetSelectedValue function.

<asp:datagrid id="BOMDataGrid" runat="server" AutoGenerateColumns="False" OnEditCommand="Edit"             OnCancelCommand="Cancel" OnUpdateCommand="Update" OnDeleteCommand="Delete">
......
         <asp:DropDownList id="MaterialDDL" runat="server" DataSource='<%# MaterialDT%>' DataTextField="Material" DataValueField="ID" SelectedValue='<%# GetSelectedValue(DataBinder.Eval(Container, "DataItem.MaterialID"))%>'>
         </asp:DropDownList>

public String GetSelectedValue(object selVal)
{      
     if (selVal.Equals("") || selVal==null)
         return null;
     else
         return selVal.ToString();                              
}

i have a:
public DataTable MaterialDT; in the .cs

and am calling GetData() to populate and bind the datagrid and to poulate the datatable for the dropdownlist:MaterialDT.


            void GetData()
            {                  
                        SqlCommand dataCommand = new SqlCommand();
                        SqlConnection dataConnection = new SqlConnection();
                        dataConnection.ConnectionString = dbConn;
                        dataCommand.Connection = dataConnection;                  
                        
                        dataCommand.CommandText = "GetMaterials";
                        dataCommand.CommandType = System.Data.CommandType.StoredProcedure;      
                  
                        SqlDataAdapter MaterialDA = new SqlDataAdapter(dataCommand);
                        MaterialDA.Fill(DS,"Material");

                        MaterialDT = DS.Tables["Material"];
                        
                        SqlParameter reportIDprm;
                        reportIDprm= new SqlParameter("@reportID",1);                  
                        dataCommand.Parameters.Add(reportIDprm);

                        dataCommand.CommandText = "GetBOM";
                        dataCommand.CommandType = System.Data.CommandType.StoredProcedure;      

                        BOMDA = new SqlDataAdapter(dataCommand);
                        BOMDA.Fill(DS,"BOM");
                        
                        BOMDataGrid.DataSource = DS.Tables["BOM"];
                        BOMDataGrid.DataBind();      <-----------------------error here                  
                  /*
                  }
                  catch(ArgumentOutOfRangeException OutOfRange)
                  {
                        Label1.Text = OutOfRange.Message;
                  }
                  catch(Exception e)
                  {
                        Label1.Text = e.Message;
                  }
                                         */
            }
but am still getting the error on pressing the edit button in the datagrid on items that were added with the add material button:
which only has this at its end:

BOMDataGrid.EditItemIndex = -1;
GetData();      

hope you might help, 10x in advance.


 

0
Comment
Question by:stephen_rota
  • 2
3 Comments
 
LVL 5

Accepted Solution

by:
GENTP earned 500 total points
ID: 16960318
Have you tried changing from seting the edititemindex from -1 to setting it to 0?
0
 

Author Comment

by:stephen_rota
ID: 16962286
no i did not try that one.  My first impression was that the datagrid (i.e. due to the editItemIndex as you are noting) was causing the outofrange exception. but then on following some posts on your site I got the impression (and continued to convince myself of this after some testing) that the dropdown list was causing that excepiton since there were no itmes selected (something on the same argument as what happens with the HTML select or raedio buttons i.e. there is no value for the dropdown unless anything is selected) hence I introduced the GetSelectedValue function. However I will try setting edititemindex to 0 tomorrow morniing and reply with the outcome. -1 resets the datagrid to a no edit mode right? 10x.
0
 

Author Comment

by:stephen_rota
ID: 17051139
the prob was when have an unselected dropdown. solved this by defaulting the dropdown list to a selection of none. i am getting the value, text from a DB so i just added an entry of id: -1, desc: none. 10x.
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
firstChar challenge 13 115
wordappend challenge 8 179
VB6 Compile Compatibility Issue 4 102
recursion example 16 128
A short article about a problem I had getting the GPS LocationListener working.
This article will inform Clients about common and important expectations from the freelancers (Experts) who are looking at your Gig.
In this fourth video of the Xpdf series, we discuss and demonstrate the PDFinfo utility, which retrieves the contents of a PDF's Info Dictionary, as well as some other information, including the page count. We show how to isolate the page count in a…
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question