Tengo un problema con la asignación de matriz de cadena en Datarow. En primer lugar, he creado el objeto de matriz de cadena y poner 2 valores en la matriz de 100(de todo tamaño). Cómo muchos de los valores que deben ser colocados en la matriz dependds en otro, que yo no estoy mostrando aquí, sin embargo.

Entonces he tratado de convertir en objeto DataRow. Pero que dice. «referencia a objeto no establecida como instancia de un objeto»

DataRow dr = null;
string[] strconcat = new string[100];
dr["concat"] = strconcat[i];

Gracias de antemano

Editar– en Realidad, yo estaba tratando de poner estos matriz de cadena de valores en la lista desplegable (ddchooseadeal). ¿Hay alguna otra buena manera es otro que este.

 locname = ddchoosealoc.SelectedValue.ToString();
            string[] strdeals = new string[100];
            string[] strconcat = new string[100];
            int i;
            for(i =0; i< dsdeal.Tables[0].Rows.Count; i++)
            {
               strdeals[i] = Convert.ToString( dsdeal.Tables[0].Rows[i]["Title"]);
               strconcat[i] = strdeals[i]+" -- "+ locname;
            }
               DataRow dr = null;
               ddchooseadeal.Items.Clear();
               ListItem li = new ListItem("Choose a Deal");
               ddchooseadeal.Items.Add(li);


               dr["drconcat"] = strconcat[0];
               ListItem item = new ListItem();
               item.Text = NullHandler.NullHandlerForString(strconcat[i], string.Empty);
               ddchoosealoc.Items.Add(item);
  • ¿qué es el ‘yo’ en este contexto?
InformationsquelleAutor Ram | 2010-12-22

6 Comentarios

  1. 10

    Su DataRow no es una parte de cualquier objeto DataTable que es en realidad a la derecha, es por eso que no se puede crear una directa objeto DataRow.

    Así que esa es la parte teórica, para resolver su problema

    //Declare a DataTable object.
    DataTable dt = new DataTable();
    
    //Add some columns to the DataTable
    dt.Columns.Add("StringHolder");
    
    //Now suppose , you are having 10 items in your string array
    foreach(string str in strArray)
    {
        DataRow drow = dt.NewRow() ;   //Here you will get an actual instance of a DataRow
        drow ["StringHolder"] = str;   //Assign values 
        dt.Rows.Add(drow);             //Don't forget to add the row to the DataTable.             
    }

    Así que, siguiendo los pasos anteriores, usted tendrá una tabla de datos se rellena con las filas.

  2. 1

    Se está intentando añadir valores a una variable que es nulo DataRow dr = null; que es la razón por la que usted está recibiendo la "object reference not set to an instance of an object" error.

    Usted necesita para crear un nuevo objeto datarow el uso de su objeto DataTable, a continuación, la adición de los valores que DataRow. Sin ver más de el código sería duro para ofrecer mucha más ayuda, pero el siguiente artículo de MSDN le ayudará a empezar:

    Cómo: Agregar Filas a una tabla de datos

  3. 0

    consulte con su depurador si su columna deseada existe:

    var x = dr["concat"];

    y comprobar si el valor existe en la matriz de cadena con:

    var y = strconcat[i];

    su datarow anterior se inicializa con el valor para el mensaje de error es absolutamente plausible.
    usted tiene el diseño de una tabla de datos con las columnas que desee. después de que obtener una nueva fila de la tabla y guardar los valores a partir de su matriz de cadena para la datarow.

    ver msdn: cómo agregar filas a una tabla de datos => http://msdn.microsoft.com/en-us/library/5ycd1034%28VS.80%29.aspx

  4. 0

    Su matriz de cadena aquí tiene 100 elementos, todos nulos. Así que si usted asignar uno de los elementos dentro de su fila de datos, se asigna el valor null. No una cadena.

    Si va a crear una matriz, los elementos permanecerán no inicializado hasta que rellenar con algo. Los tipos de valor que tendrá su valor predeterminado (0 para int, false bool, etc.) mientras que los tipos de referencia (como string) default null.

    También, el dr. se establece en null en su ejemplo.

  5. 0

    Edificio de Saurabh la respuesta, usted puede construir una tabla de datos y las columnas y agregar cada DataRow.

    Pero hay un constructor para el objeto DataRow que toma un params object[] values. Así que usted puede agregar automáticamente un conjunto de matriz de cadena a un objeto DataRow, a condición de que el orden de los elementos coincide con el orden de las columnas especificadas:

    //Create the data table
    var dataTable = new DataTable("TableName");
    
    //Add the columns you will need
    dataTable.Columns.Add("FirstName");
    dataTable.Columns.Add("LastName");
    dataTable.Columns.Add("Whatever");
    
    //Get your data in string array format
    //Will need to be FirstName, LastName, Whatever
    string[] data = LoadStringArrayFromCsvOrSomething();
    
    //Add the DataRow using the string array
    dataTable.Rows.Add(data);

    Esto funciona muy bien en conjunto con el Microsoft.VisualBasic.FileIO.TextFieldParser y la System.Data.SqlClient.SqlBulkCopy. Usted puede tirar de datos en SQL Server como su asunto de nadie.

Dejar respuesta

Please enter your comment!
Please enter your name here