본문 바로가기

ASP.NET_ 낱말퍼즐/프로그램

ASP.NET으로 '낱말잇기 퍼즐'만들기_ 프로그램하기_Default

클래스 선언:  PuzzleClass _Puzzle = new PuzzleClass(); 호출: PuzzleClass _Puzzle = new PuzzleClass();
protected void Page_Load(object sender, EventArgs e)
    {
        PuzzleListSetting();
    }
    protected void PuzzleListSetting()
    {
        DataSet ds = new DataSet();
        //View는 해당 글 하나만 가져오기 때문에 DataRow로 선언하지만, List는 통체로 가져오기 때문에 DataSet으로 선언한다
        ds = _Puzzle.ListPuzzle("SP_WordPuzzle_List");
        PuzzleListTable.DataSource = ds.Tables[0];
        PuzzleListTable.DataMember = "PuzzleListTable";
        PuzzleListTable.DataBind();
    }

ListPuzzle

 public DataSet ListPuzzle(string procName)
    {
        SqlConnection conn = CDBConn.GetConn();
        SqlCommand cmd = new SqlCommand();
        DataSet ds = new DataSet();

        cmd.CommandText = procName;
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Connection = conn;

        SqlDataAdapter adap = new SqlDataAdapter(cmd);
        adap.Fill(ds);
        return ds;
    }



PuzzleListTable_ItemDataBound
- Repeater를 제어하기위하여 e.Item.ItemType가 ListItemType.Item  또는 ListItemType.AlternatingItem일때만 if문 안으로
 들어오도록 한다.  lbl_title.Text에 data["title"].ToString()를 link를 걸어 출력한다. 그렇지않을 경우 lbl_footer.Visible = false가 되면서  "등록된 낱말퀴즈가 없습니다"가 출력된다.

protected void PuzzleListTable_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        DataRowView data = (DataRowView)e.Item.DataItem;
        Label lbl_title = (Label)e.Item.FindControl("title");//title의 원래위치정보를 lbl_title에 저장
        if (totCnt == 0)
        {
            HtmlTableRow lbl_footer = (HtmlTableRow)e.Item.FindControl("_EmptyData");
            lbl_footer.Visible = false;
        }
        else
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                lbl_title.Text = "<a href=\"/PuzzleView.aspx?idx=" + data["idx"].ToString() + "\">" + data["title"].ToString() + "</a>";
            }
            else if (e.Item.ItemType == ListItemType.Footer)
            {
                HtmlTableRow lbl_footer = (HtmlTableRow)e.Item.FindControl("_EmptyData");
                lbl_footer.Visible = false;
            }
        }
    }