Iterations through a Dataset/datagrid

I am new to C# and dataset/datagrid processing. When saving any changes, I need to know how to iterate through changed rows to evaluate column contents for validation. The information I have at my disposal does not show any examples. Any help would be greatly appreciated.



Answer this question

Iterations through a Dataset/datagrid

  • mracuraintegra

    yes my fault, it should have been DataColumn! Ive modified the post now.

    how are you checking against DBNull Tried this

    foreach(DataRow currentRow in theModifiedRows.Rows)

    {

    foreach(DataColumn currentColumn in theModifiedRows.Columns)

    {

    if (currentRow[currentColumn] != DBNull.Value)

    {

    object currentColumnValue = currentRow[currentColumn]

    }

    }

    }



  • Alessandro Camargo

    Yes this works. I was checking as

    if (currentRow[currentColumn] != DBNull) I left off the .Value.

    Is there any way to, if this value is null, assign it another value, such as

    if (currentRow[currentColumn] == DBNull.Value)

    {

    currentRow[currentColumn] = "This Result";

    }

    This obviously does not work, but it is what I want to do.

    Thanks again for all your help.


  • NamelessJuan

    well the changes are being applied to the dataset itself, and thats what the dataadapter uses to send the values etc... to the database to update it/insert the new record.

    now, if its failing the INSERT statement then thats not the problem for your original problem. When you retrieve the values from the database, I had thought you were validating the values so whatever nulls there may be, you wish to replace them - but now from this I believe you want to validate also before inserting the new records

    Are you able to post your Insert statement, the insert codes you have



  • DEEPAKonWWW

    I found the problem. It was something I had hidden in the code. Thanks so much for your patience and help.


  • Fenrir80

    why can't you do:

    currentRow[currentColumn] = "new value";

    I've tried it and works fine and logically looks fine too. What errors are you getting



  • Artem Bytsin

    Yep, the value in currentRow[currentColumn] is getting assigned, but still failing on the INSERT saying that the value is NULL. Should I be assigning the value to the Bind variable somehow It is almost like the column is not getting set to the bind variable of :CLIENT_CD.

    The insert statement associated with this data adaptor is something like this

    insert into tablea (client_cd) values (:client_cd). Client code is null and I am setting to a value (above), but when

    the dataadapter.update(table) is called, the INSERT statement fails because the value is null.

    Thanks


  • Kevin McGarvey

    The part

    DataTable theModifiedCollection = theDataSet.Tables[0].GetChanges(DataRowState.Modified);

    I was aware of. But where I am stuck is once I get the modified rows, I need to validate each one of them, I suppose through a loop.

    I need to know how to reference the row/column of each of the rows deteremined in the statement above.

    Thanks


  • VladR

    it will be assigning the value - when you do:

    currentRow[currentColumn] = "new value" //for example we assume that the current data type is of string, change appropriately to match the data type

    do a MessageBox.Show(currentRow[currentColumn].ToString()) after assigning the value, you will see that the value has been modified as you had stated.

    probably a problem with something else



  • Rocky82

    you can get the modified rows of data in the dataset:

    DataTable theModifiedCollection = theDataSet.Tables[0].GetChanges(DataRowState.Modified);

    then you can go through the rows/columns of the "theModifiedCollection" and do your validation. Or you could validate the entire dataset, but this would be ineffecient as you may have x amount of rows of data, could be 10's or 100's or 1000's so doing it the way I have shown would be better as it would only get the rows of data that have been modified only.

    does this help



  • Carl Bruneau

    Almost there. This works (except there was a typo. it should have been foreach DataColumn in the second loop). If currentColumnValue is null, I am trying to check against "" or Null and it does not equate. In the debugger, it says the value is DBNull, but when I try to check against that, it give me a compiler error.

    Thanks for the info. Sorry to be a pain, but this is really new to me.


  • EvilOneSD

    No error, it is just that it does not appear to be assigning the value. The particular column is a NOT NULL column in the database, and I am trying to assign it a value, but after the iterations, the INSERT fails because it is saying the value is NULL.


  • chicagoclone

    to go through each row:

     

    foreach(DataRow currentRow in theModifiedRows.Rows)

    {

       foreach(DataColumn currentColumn in theModifiedRows.Columns)

       {

          object currentColumnValue = currentRow[currentColumn]

       }

    }

     

    does this help



  • Iterations through a Dataset/datagrid