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

  • Автор темы *null
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

*null

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

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

NikSoft

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

Код:
<%@ 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>
Код:
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) + "');");
}
}
}
 
N

*null

Гость
#3
NikSoft, спасибо!

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

NikSoft

Гость
#4
P

Pasha

Гость
#5
Пару вопросов для размышления:

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.
 
N

NikSoft

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

Pasha

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

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

karlito

Гость
#9
Для: Pasha

Цитата
Пользуясь случаем хочу передать привет авторам Korhani, EP и ETT

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