Кликнутый элемент Checkboxlist’а без Submit'а

Тема в разделе ".NET", создана пользователем *null, 22 мар 2007.

Статус темы:
Закрыта.
  1. *null

    *null Гость

    Здравствуйте!
    Подскажите, пожалуйста, как можно получить текст элемента (ListItem) по которому пользователь кликнул списка CheckBoxList клиентским скриптом (без сабмита серверу)?

    Для ListBox’а это легко получить тем же JS через selectedItem, а вот у CheckBoxList он всегда равен -1. Есть какие-нибудь решения?
     
  2. NikSoft

    NikSoft Гость

    Можно сделать так

    Код (Text):
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>Untitled Page</title>

    <script language="javascript">
    function checkItem(id){
    alert(document.getElementById(id).nextSibling.innerHTML);
    }
    </script>

    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <asp:CheckBoxList ID="CheckBoxList1" runat="server" BorderStyle="Solid" BorderWidth="1px">
    <asp:ListItem Value="value1">text1</asp:ListItem>
    <asp:ListItem Value="value2">text2</asp:ListItem>
    <asp:ListItem Value="value3">text3</asp:ListItem>
    </asp:CheckBoxList></div>


    </form>
    </body>
    </html>
    Код (Text):
    public partial class _Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    for(int i = 0; i < CheckBoxList1.Items.Count; i++ )
    {
    CheckBoxList1.Items[i].Attributes.Add("onclick", "java script:checkItem('" + CheckBoxList1.ClientID + "_" + Convert.ToString(i) + "');");
    }
    }
    }
     
  3. *null

    *null Гость

    NikSoft, спасибо!

    Мне сейчас пришлось ограничиться DropDownList'ом - вроде все довольны.
    Но Ваш пример мне очень даже пригодиться еще :())
    У меня знаний по asp.net пока явно не достаточно, не знал насчет возможности ставить js-обработчик на
    onclick через attributes. Спасибо!
     
  4. NikSoft

    NikSoft Гость

  5. Pasha

    Pasha Гость

    Пару вопросов для размышления:

    1. Что будет, если у CheckBoxList1 добавить аттрибут TextAlign="Left"?
    2. Что будет, если Items в CheckBoxList1 не заадны статически, а заполняются через DataSource (через задание DataSourceID)?
    3. Что будет, если добрый хакер Петя через 4 месяца в PreRender поменяет текст у Item с индексом 0, например с "Please Select" на "Select a country".

    Write your code as if the person maintaining it is a homicidal maniac who knows where you live...

    Because I do.
     
  6. NikSoft

    NikSoft Гость

    Что будет, если завтра тебе на голову упадет метеорит?
     
  7. Pasha

    Pasha Гость

    Для: NikSoft
    Ты когда-нибудь поддерживал проект, в котом было много такого-вот "мегакода"? Я поддерживал. Совсем невесело получается. Код, привешивающий скрипты, нужно вписывать в PreRender, иначе на голову может упасть не метеорит, а кулак следующего разработчика.

    З.Ы. Пользуясь случаем хочу передать привет авторам Korhani, EP и ETT.
     
  8. NikSoft

    NikSoft Гость

    Для: Pasha
    Кто такие?
     
  9. karlito

    karlito Гость

    Видно те разработчики, которым лучше не встречаться с Pasha во избежании снижения своего самоуважения. :(
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей