J'ai un contrôle GridView que je veux avoir 2 champs visibles, une étiquette et une liste déroulante. Au lieu d'utiliser un RowEditTemplate, j'espérais juste définir le ItemTemplate comme étant la valeur déroulante.Mise à jour à partir de GridView on Dropdown modifié
Dans le cas où une liste déroulante est modifiée, je veux exécuter du code où je peux obtenir la clé entière pour cette ligne gridview, et la nouvelle valeur sélectionnée de la liste déroulante. Quelque chose comme ce qui suit:
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False"
DataKeyNames="pk_id" onrowdeleting="GridView2_RowDeleting"
onrowcommand="GridView2_RowCommand">
<Columns>
<asp:BoundField DataField="pk_id" Visible="False" />
<asp:BoundField DataField="Column1" HeaderText="Column1" />
<asp:TemplateField HeaderText="Column2">
<ItemTemplate>
<asp:DropDownList ID="DropDownList3" runat="server"
DataSourceID="SqlDataSource" DataTextField="name"
DataValueField="id2"
SelectedValue='<%# Bind("id2") %>'
AutoPostBack="True">
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:Main %>"
SelectCommand="get_TestData" SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
CODE DERRIÈRE
protected void Page_Load(object sender, EventArgs e)
{
...
GridView2.DataSource = new Person(id).GetDataSet();
GridView2.DataBind();
}
protected void GridView2_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
// Call delete function with the key
// Delete(key);
}
protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{
// figure out which row sent it
// UpdateRecord(key, newvalue)
}
La liste déroulante est remplie et la valeur sélectionnée correctement, mais je ne peux pas obtenir la suppression ou la mise à jour par menu déroulant pour fonctionner correctement. J'ai essayé d'implémenter ces fonctions, mais le RowCommand ne semble pas déclencher lorsque la liste déroulante déclenche une publication. Même si cela se déclenche, je ne suis pas sûr de savoir comment obtenir les valeurs dont j'ai besoin. Y a-t-il une meilleure façon de m'y prendre?
Tricky. Est-ce que ViewState est activé pour la page? –
Ouais ViewState est activé. –