ASP.NEC#에 각각 대해 CheckBoxList에서 선택한 항목의 값을 가져오는 방법은 무엇입니까?
다음과 같은 CheckBoxList가 있습니다.
<asp:CheckBoxList ID="CBLGold" runat="server" CssClass="cbl">
<asp:ListItem Value="TGJU"> TG </asp:ListItem>
<asp:ListItem Value="GOLDOZ"> Gold </asp:ListItem>
<asp:ListItem Value="SILVEROZ"> Silver </asp:ListItem>
<asp:ListItem Value="NERKH"> NE </asp:ListItem>
<asp:ListItem Value="TALA"> Tala </asp:ListItem>
<asp:ListItem Value="YARAN"> Sekeh </asp:ListItem>
</asp:CheckBoxList>
이제 각각을 사용하여 이 CheckBoxList에서 선택한 항목의 값을 가져오고 값을 목록에 넣으려고 합니다.
코드가 짧은 것을 선호합니다.
List<ListItem> selected = CBLGold.Items.Cast<ListItem>()
.Where(li => li.Selected)
.ToList();
또는 간단한 방법으로foreach
:
List<ListItem> selected = new List<ListItem>();
foreach (ListItem item in CBLGold.Items)
if (item.Selected) selected.Add(item);
만약 당신이 단지 원한다면.ListItem.Value
:
List<string> selectedValues = CBLGold.Items.Cast<ListItem>()
.Where(li => li.Selected)
.Select(li => li.Value)
.ToList();
foreach (ListItem item in CBLGold.Items)
{
if (item.Selected)
{
string selectedValue = item.Value;
}
}
안녕하세요. 항상 약간의 LINQ를 사용하여 선택한 목록 항목을 가져온 다음 결과를 사용하여 원하는 작업을 수행할 수 있습니다.
var selected = CBLGold.Items.Cast<ListItem>().Where(x => x.Selected);
// work with selected...
여기서 제안한 내용에 따라 상속 대상 유형에 대해 LINQ를 사용하여 선택한 항목의 목록을 반환하는 확장 방법을 추가했습니다.
모든ListControl
개체에 유형 속성이 있습니다.ListItemCollection
의 컬렉션을 공개합니다. 각 컬렉션은 다음과 같습니다.Selected
소유물.
C 샤프:
public static IEnumerable<ListItem> GetSelectedItems(this ListControl checkBoxList)
{
return from ListItem li in checkBoxList.Items where li.Selected select li;
}
비주얼 베이직:
<Extension()> _
Public Function GetSelectedItems(ByVal checkBoxList As ListControl) As IEnumerable(Of ListItem)
Return From li As ListItem In checkBoxList.Items Where li.Selected
End Function
그런 다음 다음 두 언어 중 하나에서 다음과 같이 사용합니다.
myCheckBoxList.GetSelectedItems()
List<string> values =new list<string>();
foreach(ListItem Item in ChkList.Item)
{
if(Item.Selected)
values.Add(item.Value);
}
@Tim Schmelter를 보충하기 위해, 그곳에서 다시.List<int>
대신,
List<string> selectedValues = CBLGold.Items.Cast<ListItem>()
.Where(li => li.Selected)
.Select(li => li.Value)
.Select(int.Parse)
.ToList();
데이터 바인딩이 있는 경우checklistbox
얻는 것은 효과가 없습니다.item(j).Selected
컨트롤에 선택한 특성이 없기 때문입니다.선택 항목(예: 로드 시)을 선택 취소하면 이제 이해할 수 있습니다.item(j).selected
.
선택한 값을 다음과 같이 구분된 단일 열에 저장하려는 경우,
그런 다음 아래의 접근 방식을 사용할 수 있습니다.
string selectedItems = String.Join(",", CBLGold.Items.OfType<ListItem>().Where(r => r.Selected).Select(r => r.Value));
값이 아닌 텍스트를 저장하려면 값을 변경합니다.값 tor.본문
string s= string.Empty
for (int i = 0; i < Chkboxlist.Items.Count; i++)
{
if (Chkboxlist.Items[i].Selected)
{
s+= Chkboxlist.Items[i].Value + ";";
}
}
뒤에 있는 내 코드에서 나는 내 Page_Load 이벤트의 sqldb에서 확인란 목록을 만들었고, 내 button_click 이벤트에서는 확인란 목록에서 모든 값을 가져옵니다.
그래서 내가 몇 개의 확인란을 선택하고 버튼을 클릭했을 때 내 page_load 이벤트가 확인란 목록을 다시 생성하여 확인란 값을 가져올 때 확인란이 선택되지 않은 것이 가장 먼저 발생했습니다.page_load 이벤트에 if(!this)를 추가하지 못했습니다.게시물 뒤로)
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
// db query and create checkboxlist and other
SqlConnection dbConn = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnString"].ConnectionString);
string query;
try
{
query = "SELECT [name], [mail] FROM [users]";
dbConn.Open();
SqlDataAdapter da = new SqlDataAdapter(query, dbConn);
DataSet ds = new DataSet();
da.Fill(ds);
if (ds.Tables[0].Rows.Count != 0)
{
checkboxlist1.DataSource = ds;
checkboxlist1.DataTextField = "name";
checkboxlist1.DataValueField = "mail";
checkboxlist1.DataBind();
}
else
{
Response.Write("No Results found");
}
}
catch (Exception ex)
{
Response.Write("<br>" + ex);
}
finally
{
dbConn.Close();
}
}
}
protected void btnSend_Click(object sender, EventArgs e)
{
string strChkBox = string.Empty;
foreach (ListItem li in checkboxlist1.Value)
{
if (li.Selected == true)
{
strChkBox += li.Value + "; ";
// use only strChkBox += li + ", "; if you want the name of each checkbox checked rather then it's value.
}
}
Response.Write(strChkBox);
}
메일 전송 기능에 사용할 세미콜론으로 구분된 목록이 예상대로 출력되었습니다.
bill@contoso.com; jeff@corp.inc; sam@dot.net
작은 문제에 대한 긴 대답.저는 이 분야의 전문가와는 거리가 멀고 이보다 더 나은 해결책이 있다는 것을 알고 있지만 일부에게는 도움이 될 수도 있습니다.
이 간단한 방법을 사용하여 선택한 값을 가져와 문자열에 결합하고 싶습니다.
private string JoinCBLSelectedValues(CheckBoxList cbl, string separator = "")
{
return string.Join(separator, cbl.Items.Cast<ListItem>().Where(li => li.Selected).ToList());
}
언급URL : https://stackoverflow.com/questions/18924147/how-to-get-values-of-selected-items-in-checkboxlist-with-foreach-in-asp-net-c
'programing' 카테고리의 다른 글
Python 스크립트에서 암호 숨기기(안전하지 않은 난독화만 해당) (0) | 2023.06.10 |
---|---|
AWS API 게이트웨이 메서드 응답에 대한 유형 스크립트에서 AWS 람다 응답과 함께 반환되는 유형은 무엇입니까? (0) | 2023.06.10 |
vba는 셀 그룹을 기능 범위로 전달합니다. (0) | 2023.06.10 |
클래스의 Python 장식가 (0) | 2023.06.10 |
소스 파일에도 'external C'를 추가해야 합니까? (0) | 2023.06.10 |