1
연습 문제를 해결하기 위해 노력하고 있는데 일련의 확인란이 필요합니다.이 확인란은 어느 것이 선택되었는지에 따라 데이터 세트를 업데이트해야합니다. 현재 코드는 작동하지만 체크 박스는 제거되지 않습니다. 그들 :체크 박스를 사용하여 데이터 세트 격자보기 업데이트
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web.Security;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Web.Configuration;
public partial class application_Crosswalk : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
Cache.Remove("CrosswalkSPS");
DataSet ds = GetDataSet();
chkColumns.DataSource = ds.Tables["CrosswalkSPS"].Columns;
chkColumns.DataTextField = "ColumnName";
chkColumns.DataBind();
}
}
private DataSet GetDataSet()
{
DataSet ds = (DataSet)Cache["CrosswalkSPS"];
// Contact the database if necessary.
if (ds == null)
{
ds = RetrieveData();
Cache.Insert("CrosswalkSPS", ds, null, DateTime.MaxValue, TimeSpan.FromMinutes(2));
lblCacheStatus.Text = "Created and added to cache.";
}
else
{
lblCacheStatus.Text = "Retrieved from cache.";
}
return ds;
}
// This method performs the database query, if the
// DataSet object isn't available in the cache.
private DataSet RetrieveData()
{
string connectionString = WebConfigurationManager.ConnectionStrings["dbbuddystring2"].ConnectionString;
string SQLSelect = "SELECT * FROM CrosswalkSPS";
SqlConnection con = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(SQLSelect, con);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
try
{
con.Open();
adapter.Fill(ds, "CrosswalkSPS");
}
finally
{
con.Close();
}
return ds;
}
protected void cmdFilter_Click(object sender, EventArgs e)
{
DataSet ds = GetDataSet();
// Copy the DataSet so the cached item isn't affected
// when we remove columns.
ds = ds.Copy();
foreach (ListItem item in chkColumns.Items)
{
if (item.Selected)
{
ds.Tables[0].Columns.Remove(item.Text);
}
}
gridCustomers.DataSource = ds.Tables[0];
gridCustomers.DataBind();
}
}
:
여기
ds.Tables[0].Columns.Add(item.Text);
전체 코드입니다 :이로 변경하면
ds.Tables[0].Columns.Remove(item.Text);
는 코드를 나누기 0
실제 오류가 반환됩니다. –
System.Data.DuplicateNameException : 'Common Career Technical Core'라는 열이이 DataTable에 이미 속해 있습니다. – PoopaSaurasRex
복사본이 있고 나중에 캐시 [ "CrosswalkSPS"]'를 재설정하지 않았기 때문일 수 있습니다. 나는 내가 짐작하고 있다는 것을 모른다. –