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.