我在asp.net网络表单中有listview。我想在按钮点击后选择行并更新 为此,我想使用Checkbox / CheckboxList。但我不明白如何将有关行或从选定行中的列的信息发送到Checkbox / CheckboxList项目 如何使用Checkbox / CheckboxList选择行并更新它们? 我使用Asp.net Linq Entity Framework 我的代码
<asp:Button ID="ButtonTest" runat ="server" OnClick="ButtonTest_Click" />
<asp:ListView ID="ListView2" ItemType="DocCat.Models.ReqInf" SelectMethod="GetReqF" OnItemDataBound="ListView2_ItemDataBound"
DataKeyNames="requestN" EnableViewState="true" runat="server" UpdateMethod="ListView2_UpdateItem" DeleteMethod="ListView2_DeleteItem" InsertMethod="ListView2_InsertItem">
<LayoutTemplate>
<div class="outerContainer" style="overflow: scroll">
<table id="docTable">
<thead>
<tr>
<th>
Выбрать
</th>
<th>First</th>
<th>Request</th>
<th>Third</th>
<th>Four</th>
</tr>
</thead>
<tbody runat="server" id="itemPlaceholder"></tbody>
</table>
</div>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td> <asp:CheckBoxList runat="server" ID="CheckNew" ><asp:ListItem>Выбрать</asp:ListItem></asp:CheckBoxList></td>
<td>
</td>
<td><%# Item.BirthDate.Date%></td>
<td><%# Item.F1 %></td>
<td><%# Item.F2 %></td>
<td><%# Item.F3 %></td>
</tr>
</ItemTemplate>
</asp:ListView>
所选行不会显示在Checkboxlist项目和字符串selectedItems中:
CheckBoxList cblRoles = ListView2.Items[0].FindControl("CheckNew") as CheckBoxList;
string selectedItems = "";
for (int i = 0; i < cblRoles.Items.Count; i++)
{
if (cblRoles.Items[i].Selected)
{
selectedItems = selectedItems + cblRoles.Items[i].Value + ",";
}
}
答案 0 :(得分:0)
我最近使用过这种UI。首先我创建了表UI,我在后面的代码中创建了填充表方法。我使用ADO.net进行数据访问。
注意:创建存储过程以获取数据并在按钮点击后更新数据。
步骤1:在复选框的创建对象中编写Populate Table方法,但我使用了单选按钮。
using (mTableRow = new HtmlTableRow()){
{
#region Radio Button
using (HtmlTableCell lTableCell = new HtmlTableCell())
{
RadioButton mradioButton = new RadioButton();
mradioButton.ID = "Radio" + listInfo.ID;
mradioButton.GroupName = "rowSelector1";
mradioButton.AutoPostBack = true;
mradioButton.Checked = false;
mradioButton.CheckedChanged += new EventHandler(AvailableRadioButton_CheckedChanged);
lTableCell.Attributes["class"] = "RadioButton";
lTableCell.Controls.Add(mradioButton);
mTableRow.Cells.Add(lTableCell);
#endregion
// add all the remaining columns
// add table row to the table.
步骤2:创建一个方法点击Checkbox的事件。
答案 1 :(得分:0)
我的问题是找到复选框,我错过了这个:
foreach (ListViewDataItem item in this.ListView2.Items)
{
if (item.ItemType == ListViewItemType.DataItem)
{
一切正常。
我的button_click方法:
List<int> ls = new List<int>();
{
foreach (ListViewDataItem item in this.ListView2.Items)
{
if (item.ItemType == ListViewItemType.DataItem)
{
CheckBox chkRow = item.FindControl("CheckBox") as CheckBox;
if (chkRow.Checked)
{
int request = int.Parse((item.FindControl("FirstFind") as Label).Text.Trim());
ls.Add(request);
}
}
}
repository.Approved(ls, newstat);
更新方法
public void Approved(List<int> list,int stat )
{
var friends = context.Requery.Where(f => list.Contains(f.parametr)).ToList();
friends.ForEach(a =>
{
a.par1 = 0;
a.par2 = stat;
});
context.SaveChanges();
}