Как установить выбранное значение после привязки данных

1

Я не могу понять, как установить мое выбранное значение после привязки данных. Я сохраняю значение в переменной temp, а затем снова устанавливаю его после привязки, но он не работает.

Код за

protected void InsertButton_Click(object sender, EventArgs e)
{
    var ctrl = (Control)sender;
    var lvl = (ListViewItem)ctrl.NamingContainer;
    var formSectionListBox = (ListBox)lvl.FindControl("formsection");
    var temp = formSectionListBox.SelectedValue;

    // Update ListView
    ListView1.DataSource = SqlDataSource1;                   
    ListView1.DataBind();
    formSectionListBox.Items.FindByValue(temp).Selected = true;
}

ASP.net

 <asp:ListView ID="ListView1" runat="server" InsertItemPosition="FirstItem" OnPagePropertiesChanged="ListView1_PagePropertiesChanged" OnItemEditing="ListView1_OnItemEditing" DataKeyNames="FormTitle" OnSelectedIndexChanged="ListView1_SelectedIndexChanged" OnItemCanceling="ListView1_OnItemCanceling" OnItemUpdating="ListView1_ItemUpdating" OnItemInserting="ListView1_ItemInserting" OnItemDeleting="ListView1_ItemDeleting">
    <InsertItemTemplate>
        <tr>
            <td>

                <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="Insert" OnClick="InsertButton_Click" />
                <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Clear" CausesValidation="False" />

            </td>
            <td>
                <div style="height: auto; width: 250px; overflow: auto; border: solid; border-color: ActiveBorder">
                    <asp:ListBox ID="formsection" runat="server" DataSourceID="FormSectionDataSource" DataTextField="FormSection" DataValueField="FormSectionID" AppendDataBoundItems="True" SelectedValue='<%# Bind("FormSectionID") %>' Height="150px">
                        <asp:ListItem Value=""><- please select -></asp:ListItem>
                   </asp:ListBox>

                </div>
            </td>
        </tr>
     </InsertItemTemplate>
</asp:ListView>
  • 0
    Сделайте выбор из метода ItemCreated . Посмотрите на этот вопрос так для деталей.
  • 0
    msdn.microsoft.com/en-us/library/...
Показать ещё 2 комментария
Теги:
bind

2 ответа

1

делать

formSectionListBox.SelectedItem = temp;

вы также можете использовать свойство SelectedValue для установки его значением temp. Любой должен работать.

EDIT: поскольку в вашем случае temp был значением элемента. Я бы использовал

formSectionListBox.SelectedValue = temp;

В общем, помните, что многие из этих свойств являются Get AND Set, а не только Get :)

  • 0
    Я попытался formSectionListBox.SelectedValue = temp, но он не сохранил значение после привязки данных
  • 0
    @ user3339242 так что temp был нулевым после привязки данных? каково было значение temp до и после, если не возражаете
Показать ещё 9 комментариев
0

Вы можете попробовать привязать DropDownList в ItemDataBound

<asp:ListView ID="ListView1" runat="server" 
    ...
    OnItemDataBound="ListView1_ItemDataBound">
    <InsertItemTemplate>
        ...
        <asp:ListBox ID="formsection" 
            runat="server"
            DataTextField="FormSection"
            DataValueField="FormSectionID"
            AppendDataBoundItems="True">
            <asp:ListItem Value="">please select</asp:ListItem>
        </asp:ListBox>
    </InsertItemTemplate>
</asp:ListView>

Код за

protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        var item = e.Item.DataItem as DataRowView;

        var formsection = e.Item.FindControl("formsection") as ListBox;
        formsection.DataSourceID = FormSectionDataSource;
        formsection.DataBind();
        formsection.SelectedValue = item["FormSectionID"].ToString();
    }
    else if (e.Item.ItemType == ListViewItemType.InsertItemTemplate|| 
       e.Item.ItemType == ListViewItemType.EditItemTemplate)
    {   
       ... // Updated
    }
}
  • 0
    Я пытался заставить это работать всю ночь из твоего совета. Тем не менее, я не могу найти причину, по которой formsection всегда нулевой. Не удается найти элемент управления, хотя он связывается заранее и проходит через шаблон вставки.
  • 0
    Я обновил ответ. Если это шаблон вставки, вам нужно сравнить ItemType с InsertItemTemplate и EditItemTemplate .
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню