Tableselect with dropdown per row I use a tableselect to output a list of terms and per row I want a drop down (select):

$header = array(
      'name' =&gt; array('data' =&gt; t('Name')),
      'weight' =&gt; array('data' =&gt; t('Weight')),
    );

    $options = array();

    foreach ($terms as $term) {
      $options[$term-&gt;tid] = array(
        'name' =&gt; array(
          'data' =&gt; array(
            '#title' =&gt; $term-&gt;name,
            '#type' =&gt; 'link',
            '#href' =&gt; sprintf('/taxonomy/term/%d', $term-&gt;tid),
          ),
        ),
        'weight' =&gt; array(
          'data' =&gt; array(
            '#type' =&gt; 'select',
            '#options' =&gt; range(1,25),
          ),
        ),
      );
    }

    $form['term_list']['list'] = array(
      '#type' =&gt; 'tableselect',
      '#header' =&gt; $header,
      '#options' =&gt; $options,
    );


My problem is that I do not see the value of the drop down (select) when I debug.

function example_block_save($delta = '', $edit = array()) {
  debug($edit, null, true);
}


Here is what I get:

[term_list] =&gt; Array
        (
            [list] =&gt; Array
                (
                    [5] =&gt; 5
                    [4] =&gt; 0
                    [6] =&gt; 0
                )

        )


When I check the code I can see that the select has no name, I'm guessing that's why I don't see it in the debug.
give default value property to select element e.g select form element returns value if select has been checked 

add this attribute 

'#default_value'= 1; 


to every select list and your data to select list must be an array with key and value

$element=array(
'#type'=&gt;'select',
'#default_value'=&gt;1,
'#options'=&gt;array(
         0 =&gt; t('No'),
         1 =&gt; t('Yes'),
    )

);


maybe then you have to render this element array with theme_form_element to your data variable. sorry but i havent enough time to test this solution