Hola a todos!!!!
Tengo un datagrid con dos columnas una es el nombre del elemento y otra su valor, la columna valor en el caso de q el elemento sea el nombre de la via, al editarlo debe mostrar sólo la lista de vias disponible para ese municipio, y en otros casos (por ejemplo cuando es el numero de via) muestra sólo el textbox. El problema viene cuando al editar me muestra tanto la lista desplegable como el textbox, quiero ocultar una u otra dependiendo del elemento q tenga editado. No se en q evento poner estas condiciones, he probado en el EditCommand pero no reconoce los controles del EditItemTemplate (lógico sólo está el control label con el valor del elemento), en el ItemDataBound tampoco y en el metodo RellenarVias del datasource del Dropdownlist tampoco. Cómo lo puedo hacer????
También necesito q cuando me muestre la lista de vias, en esta esté seleccionado por defecto el valor q tenia el control label antes de editarlo. Esto creo q lo debo poner en el método RellenarVias (el código lo he puesto mas abajo), pero no se cómo, ya que asigno un dataview directamente al datasource de la lista, en un dataview se puede poner un valor seleccionado por defecto, cómo???
El codigo del datagrid es el siguiente:
<ItemTemplate>
<asp:Label id="valor" runat="server"
text='<%# DataBinder.Eval(Container, "DataItem.v_elemento") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox id="txtvalor" runat="server" width="115px"
text='<%# DataBinder.Eval(Container, "Dataitem.v_elemento") %>'></asp:TextBox>
<asp
ropDownList id="dlstvias" runat="server" width="240px" autopostback="True" DataSource="<%# RellenarVias() %>" DataTextField="snvia"
DataValueField="snvia" />
</EditItemTemplate>
El código del método RellenarVias:
function TWebfmReciboConsulta.RellenarVias()
ataView;
var
ds_vias,ds_resultado
ataSet;
dt
ataView;
i:Integer;
tvias
ataTable;
Row1
ataRow;
col1
ataColumn;
dgrid
ataGrid;
begin
if codelemento='4' then begin
c:=TConexion.Create;
c.conexion :=Ca.Ingres.Client.IngresConnection.Create;
c.OpenConexion(c.conexion, Session['annoactual'].toString,Session['conexion'].toString,Session['codmpio'].toString);
via:=TVia.Create;
ds_vias:=via.ObtenerVias(c.conexion ,'001','13', Session['nmpio'].toString);
tvias:=System.Data.DataTable.Create;
col1:=System.Data.DataColumn.Create ('snvia');
tvias.Columns.Add(col1);
row1:=tvias.NewRow();
row1['snvia']:= 'Seleccione una via';
tvias.Rows.Add(row1);
for i:=0 to (ds_vias.Tables[0].Rows.Count-1) do begin
row1:=tvias.NewRow();
row1['snvia']:= ds_vias.Tables[0].Rows[i].Item['s_via'].toString + ' '+ ds_vias.Tables[0].Rows[i].Item['nc_via'].toString;
tvias.Rows.Add(row1);
end;
dt:=DataView.Create(tvias);
result:=dt;
c.CloseConexion(c.conexion);
end;
end;
Muchas gracias por todo. Espero vuestra ayuda. Chao