Вот весь код, который я использую для этого многосегментного окна, которое я нашел на многосегментной странице
HTML:
<link href="jquery-ui.css" rel="stylesheet" />
<link href="ui.multiselect.css" rel="stylesheet" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js"></script>
<script src="jquery.localisation-min.js"></script>
<script src="ui.multiselect.js"></script>
<script type="text/javascript">
$(function () {
$(".multiselect").multiselect();
});
</script>
<form runat="server">
<select class="multiselect" multiple="true" style="width:460px; height:200px;">
<option value="AA">[email protected]</option>
<option value="AB">[email protected]</option>
<option value="AC">[email protected]</option>
<option value="AD">[email protected]</option>
<option value="AE">[email protected]</option>
<option value="AF">[email protected]</option>
</select>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click"/>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</form>
С#:
protected void Button1_Click(object sender, EventArgs e)
{
String[] emailList = new String[1000];
//find the ul in the html and loop through each li
}
То, что все это переводится на стороне клиента, - это (я не уверен, что все это на 100% правильно, как я только что скопировал и вставил, если из браузера, однако вся соответствующая информация здесь):
<div class="ui-multiselect ui-helper-clearfix ui-widget" style="width: 514px;">
<div class="selected" style="width: 272px;">
<div class="actions ui-widget-header ui-helper-clearfix">
<ul class="selected connected-list ui-sortable" id="multiselectedItems" runat="server" style="height: 164px;">ev
<li class="ui-helper-hidden-accessible" style=""/>
<li class="ui-state-default ui-element ui-draggable" title="[email protected]" style="display: list-item;">ev
<li class="ui-state-default ui-element ui-draggable" title="[email protected]" style="display: list-item;">ev
</ul>
</div>
<div class="available" style="width: 234px;">
</div>
Теперь для вопроса мне нужно найти и пропустить каждый из этих элементов списка в неупорядоченном списке, получить атрибут title и сохранить его в строчном массиве при нажатии кнопки. Я уже пытался найти элемент управления, используя Form.Request ["multiselect"] и Page.FindControl ["mutliselect"], но не тех, кто работал. Как всегда, любая помощь приветствуется, спасибо.
EDIT # 1: я смотрел и искал, но там apparantly не способ сделать это, однако, вместо того, чтобы создавать новый почти идентичный вопрос, я просто отредактирую этот... Есть ли способ изменить файл javascript из ящика мультиселектора, связанного выше? Я думал, что если это возможно, тогда было бы проще просто позволить javascript добавить атрибут в элемент управления в пределах выбора... Я просто не уверен, где в javascript я могу добавить это, так что возникает вопрос.... Где в этом многозадачном файле javascript я должен отредактировать, чтобы добавить атрибут к правильно выбранному параметру?
Один из способов, конечно, не самый элегантный, - использовать HtmlAgiliyPack для очистки кода для элементов <li>
и извлечения заголовка
var doc = new HtmlAgilityPack.HtmlDocument();
//Path to the file on the filesystem
doc.LoadHtml("patch to your htmlfile");
if (!doc.DocumentNode == null)
{
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//li[@class='email']"))
{
//add title to your array
//I recommend using a List<string> instead
//list.Add(node.innerHtml);
}
}
Если вы хотите загружать ресурсы из Интернета, вам нужно использовать несколько другой код:
var web = new HtmlAgilityPack.HtmlWeb();
var doc = web.Load("http://www.path.com/to/your/file.html");
foreach(var node in doc.DocumentNode.SelectNodes("//li[@class='email']"))
{
//...
}
вы можете дать команду runat = "server" и id в ваш элемент select html
<select runat="server" Id="SelectList" class="multiselect" multiple="true" style="width:460px; height:200px;">
<option value="AA">[email protected]</option>
<option value="AB">[email protected]</option>
<option value="AC">[email protected]</option>
<option value="AD">[email protected]</option>
<option value="AE">[email protected]</option>
<option value="AF">[email protected]</option>
</select>
***
protected void Button1_Click(object sender, EventArgs e)
{
(System.Web.UI.HtmlControls.HtmlSelect)SelectList.SelectedIndices..
String[] emailList = new String[1000];
//find the ul in the html and loop through each li
}