valor una seleccionada recorrer obtener net indice datos con columna celda asp c# asp.net gridview code-behind readonly

c# - una - obtener valor gridview jquery



Cómo acceder a un valor de Boundfield seleccionado desde un GridView en código subyacente (1)

He visto preguntas similares, pero ninguna de las respuestas me ayudó a resolver este problema. Tengo GridView con un campo ReadOnly como sigue.

Vista en cuadrícula:

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="projectID" DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display." PageSize="5" OnRowUpdating="GridView1_RowUpdating"> <Columns> <asp:CommandField ShowDeleteButton="True" ShowEditButton="True"/> <asp:BoundField DataField="prID" HeaderText="prID" SortExpression="prID"/> <asp:BoundField DataField="projectName" HeaderText="projectName" SortExpression="projectName" /> <asp:BoundField DataField="projectType" HeaderText="projectType" SortExpression="projectType" /> </Columns> <EditRowStyle CssClass="GridViewEditRow"/> </asp:GridView>

como puede ver, el prID límite de prID prID tiene el atributo Readonly=True . Estoy tratando de obtener el valor del prID en código subyacente cuando el usuario está actualizando los otros campos en la fila.

código detrás:

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { GridViewRow row = GridView1.Rows[e.RowIndex]; String d1 = ((TextBox)(row.Cells[2].Controls[0])).Text; String d2 = ((TextBox)(row.Cells[3].Controls[0])).Text; // this only works while the field is not readonly string prIDUpdate = ((TextBox)(row.Cells[1].Controls[0])).Text; }

Nota: He intentado usar GridView1.DataKeys[e.RowIndex] y también onRowDataBound y d configurar BoundField listo solo en código subyacente pero no he podido obtener resultados

¡Gracias por adelantado!


Vi que la configuración de DataKeyNames en el control GridView es así

DataKeyNames="projectID"

Entonces supongo que tu nombre de clave es projectID not prID , ¿no es así? De ser así, podría obtener datos para la fila seleccionada como esta línea:

string id = GridView1.DataKeys[e.RowIndex]["projectID"].ToString();

Y también debe agregar esta columna:

<asp:BoundField DataField="projectID" HeaderText="prID" SortExpression="projectID"/>

¿Lo intentaste?

De otra manera, podrías intentar usar TemplateField en su lugar

<Columns> <asp:TemplateField HeaderText="prID" SortExpression="prID"> <ItemTemplate> <asp:Label ID="lblPrId" runat="server" Text=''<%# Bind("prID") %>''></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="projectName" HeaderText="projectName" SortExpression="projectName" /> <asp:BoundField DataField="projectType" HeaderText="projectType" SortExpression="projectType" /> </Columns>

Y este código para obtener datos de la columna prID en el controlador de eventos GridView1_RowUpdating:

Label lblPrId = row.FindControl("lblPrId") as Label; string prId = lblPrId .Text;

Lo siento si esto no ayuda.