Я хочу, чтобы иметь возможность отобрать выбранный элемент из выпадающего списка, нажать кнопку и добавить этот элемент в GridView для просмотра пользователем. Прямо сейчас, когда я нажимаю кнопку +, отображается сетка, но ячейки пусты. Какие-либо предложения?Добавление элемента раскрывающегося списка в ASP GridView
ASP код:
<tr>
<td valign="top" colspan="2">
<b>Agents Visited</b><br />
<asp:DropDownList SelectionMode="Multiple" runat="server" ID="agentsDropdown" Name="agentsDropdown" width="425"></asp:DropDownList>
</td>
<td valign="top">
<br />
<asp:Button id="agentButton" name="agentButton" runat="server" Text="+" OnClick="AddAgent" CssClass="buttonstyle" onmouseover="shade(this);" onmouseout="unshade(this);" />
</td>
</tr>
<tr>
<asp:GridView ID="agentGridView" Visible="False" AllowSorting="False" AllowPaging="False" Runat="server" AutoGenerateColumns="False" PageSize="20" >
<Columns>
<asp:TemplateField HeaderText="Agent">
<ItemTemplate>
<asp:Label ID="agentName" runat="server" Text=''></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Value">
<ItemTemplate>
<asp:Label ID="agentValue" runat="server" Text=''></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
</tr>
Initial GridView обязывать:
Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack
agentGridView.DataSource = Nothing
agentGridView.Databind()
End If
End Sub
Дополнительный код позади:
Protected Sub AddAgent(sender As Object, e As EventArgs)
If agentsDropdown.SelectedIndex > 0 Then
Dim dt As New DataTable
dt.Columns.Add("agentName")
dt.Columns.Add("agentValue")
Dim row1 As DataRow = dt.NewRow
row1.Item("agentName") = agentsDropdown.SelectedItem.Text.ToString()
row1.Item("agentValue") = agentsDropdown.SelectedValue.ToString()
dt.Rows.Add(row1)
agentGridView.DataSource = dt
agentGridView.DataBind()
agentsDropdown.SelectedIndex = 0
Dim agentRowsCount as Integer = agentGridView.Rows.Count
If agentRowsCount > 0
agentGridView.Visible = True
End If
End If
End Sub
Вы прошли через свой код. Просто догадайтесь здесь, но вы постоянно создаете новый тип данных каждый раз, когда приходите сюда. Итак, у вас есть выбранный индекс с измененным событием, когда вы делаете свой выбор? потому что в вашем коде здесь вы снова устанавливаете agentDropdown.SelectedIndex = 0, который может снова запустить его и создать новую пустую таблицу. Смотрите, если вы сюда попадете дважды. – sjramsay
Я в настоящее время не работаю в Visual Studio, поэтому переполнение кода позади - это боль. Однако комментирование SelectedIndex = 0 не дает никаких изменений. – niclake