2016-02-17 4 views
-1

Я пытаюсь получить значение из выбранного элемента, когда я нажимаю кнопку.Получить значение выбранного элемента в DataList

Вот мой код:

<asp:DataList ID="DataList1" runat="server" RepeatColumns="3" RepeatDirection="Horizontal" Width="100%"> 
    <ItemTemplate> 
     <p class="own"><asp:Image ID="Image1" runat="server" ImageUrl='<%# "GetImageDatafromDB.aspx?id=" + System.Convert.ToString(Eval("ID")) %>' Width="230" Height="250"/> 
      <br /> 
      <span class="own1" style="width:230px;"><br /><asp:Label ID="Label1" runat="server" Text='<%# Eval("Name") %>' Font-Bold="True" Font-Size="1.2em" ForeColor="White"/> 
      <br /> 
      <asp:Label ID="Label5" runat="server" Text="Direktor :" style="color:#06D85F; float:left"></asp:Label><asp:Label ID="Label2" runat="server" CssClass="InFo" Text='<%# Eval("fattare") %>' Font-Italic="true"/> 
      <br /> 
      <asp:Label ID="Label4" runat="server" Text="Year : " style="color:#06D85F; float:left;"></asp:Label><asp:Label ID="Label3" CssClass="InFo" runat="server" Text=' <%# (Eval("Ar")) %>' /> 
      </br> 
      <asp:Button ID="Button1" runat="server" Text="Visa" CommandName="ButtonClick"/> 
      </span> 
      <asp:Label ID="Label6" runat="server" Visible="false" Text='<%# Eval("Name") %>'></asp:Label> 
     </p> 
    </ItemTemplate> 
</asp:DataList> 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     string connectionString = ConfigurationManager.ConnectionStrings["Hemsida"].ConnectionString; 
     DataTable dt = new DataTable(); 
     SqlConnection conn = new SqlConnection(connectionString); 
     using (conn) 
     { 
      SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM Movies", conn); 
      ad.Fill(dt); 
     } 
     DataList1.DataSource = dt; 
     DataList1.DataBind(); 
    } 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    foreach (DataListItem item in DataList1.Items) 
    { 
     Label myTempLabel = (Label)item.FindControl("Label6"); 

     myTempLabel.Visible = true; 
    } 
} 

Когда я нажимаю кнопку, я получаю все имена всех элементов, но я только хочу, чтобы получить имя выбранного пункт.

+0

Не должен ли быть где пунктом в вашем отборном заявлении с параметром передачи имени нужных пар, чтобы где положение –

ответ

1

На мероприятии ItemCommand из DataList1, вставьте следующий код:

protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) 
{ 
    DataList1.SelectedIndex = e.Item.ItemIndex; 
    myTempLabel.Text = "You selected: " + ((Label)DataList1.SelectedItem.FindControl("Label1")).Text; 
    myTempLabel.Visible = true; 
} 
+1

Пожалуйста, вы можете объяснить как использовать ваш код –

+0

Выше код должен работать теперь, как я проверял. –

0

Я считаю, что вам нужно использовать SelectedItem.

https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datalist.selecteditem(v=vs.110).aspx

Что-то вроде этого:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    if (DataList1.SelectedItem != null) 
    { 
     Label myTempLabel = (Label)DataList1.SelectedItem.FindControl("Label6"); 
     myTempLabel.Visible = true; 
    } 
} 

Попробуйте изменить это:

<asp:Button ID="Button1" runat="server" Text="Visa" CommandName="ButtonClick"/> 

в этом:

<asp:Button ID="Button1" runat="server" Text="Visa" OnClick="Button1_Click" 
/> 

Другой альтернативой является удалить код на кнопке и обработать его на Item_Command:

//Add item command to DataList 
<asp:DataList ID="DataList1" runat="server" RepeatColumns="3" RepeatDirection="Horizontal" Width="100%" OnItemCommand="Item_Command"> 


    void Item_Command(Object sender, DataListCommandEventArgs e) 
    { 

    // Set the SelectedIndex property to select an item in the DataList. 
    ItemsList.SelectedIndex = e.Item.ItemIndex; 
    //Get the selected Item 
    DataListItem selectedItem = DataList1.DataKeys[DataListList1.SelectedIndex]; 
    //Get the label control 
    Label myTempLabel = (Label)selectedItem.FindControl("Label6"); 
    myTempLabel.Visible = true; 

    // Not sure if this is needed. 
    //ItemsList.DataSource = CreateDataSource(); 
    //ItemsList.DataBind(); 

    } 
+0

Я пробовал ур код, но все еще не работает –

Смежные вопросы