 |
|
[Web,C#] มีปัญหาเรื่อง เพิ่ม Select All ใน Dropdownlist แล้ว Search ไม่เจอค่ะ |
|
 |
|
|
 |
 |
|
ส่วนไหนครับ ที่เป็น Query 
|
 |
 |
 |
 |
Date :
2015-01-17 12:24:51 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.win เมื่อวันที่ 2015-01-17 12:24:51
รายละเอียดของการตอบ ::
Code (C#)
protected void btnSearch_Click(object sender, EventArgs e)
{
using (SqlConnection con = new SqlConnection("Server=server06;Uid=mdsadmin;PASSWORD=PsK954367xZ;database=MDS;Max Pool Size=400;Connect Timeout=600;"))
{
con.Open();
Session["strDtst"] = this.ASPxDtst.Date.ToString("yyyy-MM-dd");
Session["strDtsp"] = this.ASPxDtsp.Date.ToString("yyyy-MM-dd");
Session["strDep"] = ddlDep.SelectedItem.Text;
SqlCommand cmd = new SqlCommand("Select id_item,id_noy,txt,date_st,time_st,date_sp,time_sp,ti_cs,cause,ty,cs,cause,tw,id_cu,dep_df FROM dbo.tbl_blue LEFT JOIN dbo.tbl_yellow ON dbo.tbl_blue.id_nob=dbo.tbl_yellow.id_noy WHERE dbo.tbl_blue.archive_date IS NULL AND dbo.tbl_blue.st = 2 AND dbo.tbl_blue.id_cu = '" + ddlDep.SelectedItem.Value + "' AND dbo.tbl_yellow.date_st BETWEEN '" + ASPxDtst.Date.ToString("yyyy-MM-dd") + "' AND '" + ASPxDtsp.Date.ToString("yyyy-MM-dd") + "' GROUP BY id_item,id_noy,txt,date_st,time_st,date_sp,time_sp,ti_cs,cause,ty,cs,cause,tw,id_cu,dep_df", con);
SqlDataReader dr = cmd.ExecuteReader();
gvService.DataSource = dr;
gvService.DataBind();
con.Close();
this.lblDtst.Visible = true;
this.lblDtsp.Visible = true;
this.lblDep.Visible = true;
this.lblDtst.Text = "จากวันที่ " + Session["strDtst"] + "";
this.lblDtsp.Text = "ถึงวันที่ " + Session["strDtsp"] + "";
this.lblDep.Text = "ของแผนก " + Session["strDep"] + "";
this.btnExpToXls.Visible = true;
}
}
|
 |
 |
 |
 |
Date :
2015-01-17 13:12:20 |
By :
MercBenz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
มันไม่เจอเพราะ มันเข้าเงื่อนไข where ของ dbo.tbl_blue.id_cu เพราะเราต้องการแสดงทั้งหมดแต่เราได้แบบนี้แทน dbo.tbl_blue.id_cu = 0
Code (C#)
SqlCommand cmd = new SqlCommand("Select id_item,id_noy,txt,date_st,time_st,date_sp,time_sp,ti_cs,cause,ty,cs,cause,tw,id_cu,dep_df FROM dbo.tbl_blue LEFT JOIN dbo.tbl_yellow ON dbo.tbl_blue.id_nob=dbo.tbl_yellow.id_noy WHERE dbo.tbl_blue.archive_date IS NULL AND dbo.tbl_blue.st = 2 AND [color=yellow]dbo.tbl_blue.id_cu = '" + ddlDep.SelectedItem.Value + "' AND dbo.tbl_yellow.date_st BETWEEN '" + ASPxDtst.Date.ToString("yyyy-MM-dd") + "' AND '" + ASPxDtsp.Date.ToString("yyyy-MM-dd") + "' GROUP BY id_item,id_noy,txt,date_st,time_st,date_sp,time_sp,ti_cs,cause,ty,cs,cause,tw,id_cu,dep_df", con);
ควรที่จะเขียน query แยกไว้ข้างนอกดีกว่ามาเขียนที่ SqlCommand เนื่องจากเกิดอยากเพิ่มเงื่อนไขการตรวจสอบ
อีกจะได้ไม่ต้องมาต่อ string นะครับ
ตัวอย่างประมาณนี้นะครับ ใช้ StringBuilder
Code (C#)
StringBuilder query = new StringBuilder();
query.Append(" Select id_item,id_noy,txt,date_st,time_st");
query.Append(" ,date_sp,time_sp,ti_cs,cause,ty,cs,cause,tw,id_cu,dep_df ");
query.Append(" FROM dbo.tbl_blue LEFT JOIN dbo.tbl_yellow");
query.Append(" ON dbo.tbl_blue.id_nob=dbo.tbl_yellow.id_noy");
query.Append(" WHERE dbo.tbl_blue.archive_date IS NULL");
query.Append(" AND dbo.tbl_blue.st = 2 ");
//ถ้าเลือกไม่เลือก ALL ให้ค้นหาตาม dbo.tbl_blue.id_cu
if (int.Parse(ddlDep.SelectedItem.Value.Tostring()) != 0)
{
query.Append(" AND dbo.tbl_blue.id_cu = '" + ddlDep.SelectedItem.Value.Tostring() + "'");
}
query.Append(" AND dbo.tbl_yellow.date_st BETWEEN '" + ASPxDtst.Date.ToString("yyyy-MM-dd") +"'");
query.Append(" AND '" + ASPxDtsp.Date.ToString("yyyy-MM-dd") + "' ");
query.Append(" GROUP BY id_item,id_noy,txt,date_st,time_st,date_sp");
query.Append(" ,time_sp,ti_cs,cause,ty,cs,cause,tw,id_cu,dep_df");
SqlCommand cmd = new SqlCommand(query.ToString(), con);
SqlDataReader dr = cmd.ExecuteReader();
ลองดูนะครับ ถูกผิดอย่างไงก็แจ้งด้วยนะครับ
|
 |
 |
 |
 |
Date :
2015-01-17 14:19:21 |
By :
บัญดิษฐ |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ในกรณีถ้า แก้ไขตรง Dropdown เป็นแบบนี้
Code (C#)
protected void BindContrydropdown()
{
using (SqlConnection con = new SqlConnection("Server=server06;Uid=mdsadmin;PASSWORD=PsK954367xZ;database=MDS;Max Pool Size=400;Connect Timeout=600;"))
{
con.Open();
string sqlStatement = "SELECT id_itemtype + ' / ' + itemtype AS type, id_itemtype FROM dbo.tbl_itemtype";
SqlCommand cmd = new SqlCommand(sqlStatement, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
ddlDep.DataSource = ds;
ddlDep.DataTextField = "type";
ddlDep.DataValueField = "id_itemtype";
ddlDep.DataBind();
ddlDep.Items.Insert(0, new ListItem("All", "0"));
con.Close();
}
}
ค้นหาได้แค่ All ค่ะ
แต่ถ้าค้นหาตามแผนกมันติด error (ตามภาพ)

ขอบคุณค่ะ
|
ประวัติการแก้ไข 2015-01-17 16:26:41
 |
 |
 |
 |
Date :
2015-01-17 16:25:31 |
By :
MercBenz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ได้แล้วค่ะ แก้ไขเป็น SelectedIndex
Code (C#)
if (ddlDep.SelectedIndex != 0)
{
query.Append(" AND dbo.tbl_blue.id_cu = '" + ddlDep.SelectedItem.Value.ToString() + "'");
}
ขอบคุณมากค่ะ
|
 |
 |
 |
 |
Date :
2015-01-17 16:32:22 |
By :
MercBenz |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|