Tengo un DataGrid asi:
Código:
En resumen mi Datagrid es este:<asp:datagrid id="GrdVar" runat="server" Width="700" CellSpacing="2" OnUpdateCommand="Grd_Update" OnCancelCommand="Grd_Cancel" OnEditCommand="Grd_Edit" AutoGenerateColumns="False" DataKeyField="CveEntVar" BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="0px" BackColor="White" CellPadding="2" GridLines="Vertical" ForeColor="Black"> <FooterStyle BackColor="#CCCC99"></FooterStyle> <SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#CE5D5A"></SelectedItemStyle> <AlternatingItemStyle CssClass="bgl"></AlternatingItemStyle> <ItemStyle CssClass="bgg"></ItemStyle> <HeaderStyle Font-Bold="True" HorizontalAlign="Center" ForeColor="Black" CssClass="bgd"></HeaderStyle> <Columns> <asp:BoundColumn Visible="False" DataField="CveEntVar" SortExpression="CveEntVar" ReadOnly="True" HeaderText="Clave"> <ItemStyle Wrap="False"></ItemStyle> </asp:BoundColumn> <asp:BoundColumn DataField="PosVarFrm" ReadOnly="True"> <ItemStyle Font-Size="8pt" Wrap="False" Width="10%"></ItemStyle> </asp:BoundColumn> <asp:TemplateColumn SortExpression="NomCrtVar" HeaderText="Abreviatura"> <HeaderStyle Font-Bold="True" CssClass="ltr"></HeaderStyle> <ItemStyle HorizontalAlign="Center" Width="10%"></ItemStyle> <ItemTemplate> <asp:Label id=LblCrt runat="server" Font-Size="8" Text='<%# DataBinder.Eval(Container.DataItem, "NomCrtVar") %>'> </asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox id=edit_NomCrt runat="server" Font-Size="8" Columns="5" Text='<%# DataBinder.Eval(Container.DataItem, "NomCrtVar") %>' MaxLength="5"> </asp:TextBox> <asp:RequiredFieldValidator id="rfvNomCor" CssClass="error" Runat="server" ForeColor=" " ControlToValidate="edit_NomCrt" ErrorMessage="La abreviatura de la variable es requerida." Text="*">*</asp:RequiredFieldValidator> <asp:regularexpressionvalidator id="revNomCor" runat="server" CssClass="error" ForeColor=" " ValidationExpression="[^<>{}[\]|'%&+\*]*" ControlToValidate="edit_NomCrt" Display="Dynamic">*</asp:regularexpressionvalidator> </EditItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn SortExpression="NomLrgVar" HeaderText="Nombre"> <HeaderStyle Font-Bold="True" CssClass="ltr"></HeaderStyle> <ItemStyle Width="40%"></ItemStyle> <ItemTemplate> <asp:Label id=LblLrg runat="server" Font-Size="8" Text='<%# DataBinder.Eval(Container.DataItem, "NomLrgVar") %>'> </asp:Label> </ItemTemplate> <EditItemTemplate> <asp:TextBox id=edit_NomLrg runat="server" Font-Size="8" Columns="40" Text='<%# DataBinder.Eval(Container.DataItem, "NomLrgVar") %>' MaxLength="40"> </asp:TextBox> <asp:regularexpressionvalidator id="revNomLar" runat="server" CssClass="error" ForeColor=" " ValidationExpression="[^<>{}[\]|'%&+\*]*" ControlToValidate="edit_NomLrg" Display="Dynamic">*</asp:regularexpressionvalidator> <asp:RequiredFieldValidator id="rfvNomLar" CssClass="error" Runat="server" ForeColor=" " ControlToValidate="edit_NomLrg" ErrorMessage="El nombre de la variable es requerido." Display="Dynamic" Text="*">*</asp:RequiredFieldValidator> </EditItemTemplate> </asp:TemplateColumn> <asp:TemplateColumn SortExpression="CveUniMed" HeaderText="Unidad de medida"> <HeaderStyle Font-Bold="True" CssClass="ltr"></HeaderStyle> <ItemStyle HorizontalAlign="Center" Width="20%"></ItemStyle> <ItemTemplate> <asp:Label id=LblUniMed runat="server" Font-Size="8" Text='<%# DataBinder.Eval(Container.DataItem, "NomUniMed") %>'> </asp:Label> </ItemTemplate> <EditItemTemplate> <asp:DropDownList id=edit_UniMed runat="server" Width="120px" Font-Size="8" DataSource="<%#GetUniMed()%>" DataTextField="NomUniMed" DataValueField="CveUniMed" SelectedIndex='<%# GetSelIndexUniMed(Container.DataItem("CveUniMed")) %>' Enabled="true"> </asp:DropDownList> <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" CssClass="error" ForeColor=" " ControlToValidate="edit_UniMed" ErrorMessage="Falta seleccionar la Unidad de Medida">*</asp:RequiredFieldValidator> </EditItemTemplate> </asp:TemplateColumn> <asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Guardar " CancelText="Cancelar" EditText="Editar"> <ItemStyle Font-Size="8pt" Wrap="False" Width="20%"></ItemStyle> </asp:EditCommandColumn> </Columns> <PagerStyle HorizontalAlign="Right" ForeColor="Black" BackColor="#F7F7DE" Mode="NumericPages"></PagerStyle> </asp:datagrid>
id="GrdVar"
OnUpdateCommand="Grd_Update"
OnCancelCommand="Grd_Cancel"
OnEditCommand="Grd_Edit"
AutoGenerateColumns="False"
DataKeyField="CveEntVar"
Continuo, ahora lo ke kiero es que al dar click en ACTUALIZAR me pase a la donde los registros estan incompletos por supuesto ke el datagrid este en modo edicion para editar los datos que faltan.
Y eso es exactamente lo que no se como hacer, porke al kererle pasar la clave que traigo de la BD, me di cuenta que no es la misma ke usa el datagrid, y es ahi donde me estoy atorando.
Bueno mi evento para capturar la fila que voy a editar es:
Código:
Y bueno quisiera ke me ayudaran con esto, miren lo intentaba hacer con este codigo, pero no funciona:'Procedimiento del Grid para Editar el item seleccionado Public Sub Grd_Edit(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs) Dim iItemEdit As Integer iItemEdit = CInt(E.Item.ItemIndex) '''''iItemEdit = CInt(GrdVar.DataKeys(iItemEdit)) GrdVar.EditItemIndex = iItemEdit BindGrid() End Sub
Código:
Bueno en resumen: como hacer que mi datagrid se establezca en modo edicion en una fila determinada (esta fila depende de la clave que obtengo de la BD).'Obtiene las variables insertadas para el indicador Dim DVVariables As DataView Dim banderror As Boolean Dim i, numVar, CveEntVar As Integer DVVariables = Buss.GetVariables(CveInd) If IsNothing(DVVariables) Then Response.Redirect("WebError.aspx?iErr=GetVariables") ElseIf DVVariables.Table.Rows.Count <= 0 Then Response.Redirect("WebError.aspx?iErr=GetVariablesND") Else numVar = DVVariables.Table.Rows.Count 'Verifica que el nombre corto y largo de la variable no esten vacios For i = 0 To (numVar - 1) sNomCrt = Trim(DVVariables.Table.Rows(i).Item("NomCrtVar")) sNomLrg = Trim(DVVariables.Table.Rows(i).Item("NomLrgVar")) CveEntVar = CInt(DVVariables.Table.Rows(i).Item("CveEntVar")) 'Si existe algun error hacemos ke edite ese item If sNomCrt.Equals("") Or sNomLrg.Equals("") Then '''''Dim iItemEdit As Integer '''''iItemEdit = CInt(E.Item.ItemIndex) '''''GrdVar.EditItemIndex = CInt(GrdVar.DataKeys(iItemEdit)) GrdVar.EditItemIndex = CveEntVar GrdVar.DataSource = dVVar GrdVar.DataBind() End If Next End If
Gracias