asp.net 데이터뷰 무한정 분류
classidid 메인 키
jobClassName의 유형 이름
ClassName의 상위 클래스 id
일반적인 방법:
private void Display(string parentid, String space)
{
DataTable dt;
String strSQL;
strSQL = "Select * From Tree Where ParentID =" + parentid + " Order By ClassID DESC";
SqlDataAdapter sda = new SqlDataAdapter(strSQL, conn);
DataSet ds = new DataSet();
sda.Fill(ds, "Tree");
dt = ds.Tables["Tree"];
if (dt.Rows.Count > 0)
{
foreach (DataRow dr in dt.Rows)
{
strOpinion += space + "[" + dr["JobClassName"].ToString() +"
";
Display(dr["ClassID"].ToString(), " " + space,false);
}
}
}
이러한 방법은 모든 부모 분류에 연결을 한 번 만들어야 하기 때문에 자원을 완전히 낭비한다는 것이 분명하다
이제 모든 분류를 한 번에 제거하고 DataView의 RowFilter 속성을 사용하여 필터링을 여러 번 수행합니다.
키 코드
public partial class tree_Default : System.Web.UI.Page
{
DataTable dt = null;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
bind(0);
}
}
public void bind(int pid)
{
DataTable dt1 = bindTree(pid);
foreach (DataRow dr in dt1.Rows)
{
int id = Convert.ToInt32(dr["classid"].ToString());
if (pid == 0)
Response.Write("" + dr["jobclassname"].ToString() + "
");
else
Response.Write(""+dr["jobclassname"].ToString()+"");
bind(id);
}
}
public DataTable bindTree(int pid)
{
if (dt == null)
dt = new data().getCatelogs();
DataView root = dt.DefaultView;
root.RowFilter = "Parentid=" + pid;
return root.ToTable();
}
}
이렇게 되면 자원을 낭비할 필요도 없다.
사실 이 글은 좀 억지스럽다. 일반적으로 분류는 변동이 적기 때문에 캐시나 정태화 처리를 하면 된다. 단지 O() O~를 기록할 생각만 할 뿐이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.