3
$\begingroup$

I am storing the values from xlData to the result in a Grid form. I want when I change any of the value in any of the InputFields, it should show the change dynamically when I evaluate result again. I have to use this result variable again in my code. How can I do this?

   result = {};   
   xlData = {{1, "a", "b", "c"}, {2, "d", "e", "f"}};
   For[i = 1, i <= Length[xlData], i++,
    (iniRow = {};
     For[j = 1, j <= Length[xlData[[i]]], j++,
      If[xlData[[i, j]] != "",     
      (iniRow =Append[iniRow,InputField[xlData[[i, j]], FieldSize -> {4, 1}]];
      )]];                    
        result = Append[result, iniRow];)]
       Grid[result]                                                          
$\endgroup$
  • $\begingroup$ I'm not near mma to try it out, but please see if it is similar to this question: mathematica.stackexchange.com/q/5731/5 $\endgroup$ – rm -rf Sep 10 '12 at 13:50
  • $\begingroup$ @b.gatessucks: Yes, I have edited. $\endgroup$ – Jennifer Sep 10 '12 at 16:06
7
$\begingroup$

Your code can be made much simpler as such...

xlData = {{1, "a", "b", "c"}, {2, "d", "e", "f"}};
Grid@Table[
   With[{i = i, j = j}, 
   InputField[Dynamic[xlData[[i, j]]], FieldSize -> {4, 1}]], {i, 1, Length[xlData]},
   {j,1,Length[xlData[[1]]]}]

As you change values, it can be monitored by:

Dynamic[xlData]

As written, the code keeps xlData with a List head at all times.

|improve this answer|||||
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.