5 Réponses :
DATAVALUEFIELD CODE> semble être faux - ne devrait-il pas être
DIRECTURED code>? De même, vous devez avoir
selectedValue = '<% # eval ("** kinkid **")%>' code> -
nom de département code> serait le
SeletectText code>. p>
C'est là que je suis en difficulté. Non, la propriété ne me rendait visible pour moi. À propos de Datavaluefield, oui, vous avez raison, il devrait être la clé principale. Mais pas une partie de la discussion jusqu'à ce que ces deux propriétés ne soient disponibles pour moi.
Vs Designer peut ne pas vous montrer la propriété d'Intelli-Sense mais c'est là-bas. Il y a deux propriétés - SelectedValue et sélectionnée. Que se passe-t-il si vous écrivez sélectionnée = '<% # eval ("département")%>'?
Mon erreur - cela aurait dû être comme sélectionnéeValue = '<% # eval ("département")%>'.
sur votre grille il y a un événement appelé itemCommand code>. Créez une méthode pour celui-ci:
case Grid.EditCommandName:
//set a member variable to the string of the cell you are editing.
//something like: mString = e.item..["Column"].toString();
break;
L'utilisation du Dans votre cas, vous devrez ajouter un GridView_Databound code> Le gestionnaire d'événements résout le problème.
Hiddenfield CODE> pour stocker le
pk_départimardide Code> Valeur: P>
<asp:GridView ID="gvExample" runat="server" AutoGenerateColumns="False" OnDataBound="gvExample_DataBound">
<Columns>
<asp:TemplateField HeaderText="Department">
<EditItemTemplate>
<asp:DropDownList ID="ddlDepartment_Edit" runat="server" DataSourceID="dsDepartment_Edit"
DataTextField="DepartmentName" DataValueField="PK_DepartmentId">
</asp:DropDownList>
<asp:HiddenField ID="hfDepartmentId" runat="server" Value='<%# Bind("PK_DepartmentId") %>' />
<asp:SqlDataSource ID="dsDepartment_Edit" runat="server" ConnectionString="<%$ ConnectionStrings:BlackHillsConnect %>"
ProviderName="System.Data.SqlClient" SelectCommand="sp_GetDepartmentDropDown" SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblDepartmentName" runat="server" Text='<%# Eval("DepartmentName") %>'>
</asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" ButtonType="Button" />
</Columns>
</asp:GridView>
protected void gvExample_DataBound(object sender, EventArgs e)
{
foreach (GridViewRow gvRow in gvExample.Rows)
{
DropDownList ddlDepartment = gvRow.FindControl("ddlDepartment_Edit") as DropDownList;
HiddenField hfDepartmentId = gvRow.FindControl("hfDepartmentId") as HiddenField;
if (ddlDepartment != null && hfDepartmentId != null)
{
ddlDepartment.SelectedValue = hfDepartmentId.Value;
}
}
}
C'est le meilleur que j'ai trouvé ....
protected void GridView1_DataBound(object sender, EventArgs e) { foreach (GridViewRow gvRow in GridView1.Rows) { RadioButtonList rbl = gvRow.FindControl("rblPromptType") as RadioButtonList; HiddenField hf = gvRow.FindControl("hidPromptType") as HiddenField; if (rbl != null && hf != null) { if (hf.Value != "") { //clear the default selection if there is one rbl.ClearSelection(); } rbl.SelectedValue = hf.Value; } } }
Pourquoi vous suggérez-vous d'utiliser des boucles, lorsqu'il y a une méthode gridview code> spécifiquement faite spécifiquement pour la modification de la condition d'une ligne - le
rowdatabound () code>?
protected void MyGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
GridViewRow gvRow = (GridViewRow)e.Row;
HiddenField hfAgentID = (HiddenField)gvRow.FindControl("hfAgentID");
if (hfAgentID != null)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlAgent = (DropDownList)gvRow.FindControl("ddlAgent");
ddlAgent.SelectedValue = hfAgentID.Value;
}
}
}