• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

*null

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

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

NikSoft

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

Код:
<%@ 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

NikSoft, спасибо!

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

NikSoft

P

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

NikSoft

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

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

Pasha

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

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

karlito

Для: Pasha

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

Кто такие?

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!