PDA

View Full Version : دسته بندی اطلاعات برا اساس دو فیلد



salmah
پنج شنبه 15 مرداد 1394, 08:47 صبح
سلام
من یه جدول دارم به صورت زیر

133969
الان میخوام اطلاعات براساس کد ملی و تاریخ دسته بندی بشن
مثلا یه datalist بزارم که شامل نام و نام خانوادگی و کد ملی و تاریخ باشه
وداخلش یه gridview بذارم که سلکتش بر اساس تاریخ و کد ملی توی دیتالیست باشه
133970

notlikeothers
پنج شنبه 15 مرداد 1394, 08:58 صبح
درود.الان کوئریsql میخوای یا کد سی شارپ میخوای؟

salmah
پنج شنبه 15 مرداد 1394, 12:59 عصر
درود.الان کوئریsql میخوای یا کد سی شارپ میخوای؟
کوئری را مشکل دارم
مخصوصا کوئری اول که چه طور دسته بندی را براساس کد ملی و تاریخ مشترک انجام بدم

mamali92
پنج شنبه 15 مرداد 1394, 16:42 عصر
می تونی از دو گریدویوی تو در تو استفاده کنی به این شکلی که الان بهت توضیح میدم:
اولش دو جدول می سازی یکی برای مشتری و دومی برای کالا. تویه جدول کالا یه فیلد اضافی هم میزاری که با مشخصات و نام ، فیلد کلید اصلی جدول مشتری یکی باشه
بعد ساختن جدول ها و مقدار دهی اونها یه گریدویو داخل صفحه قرار میدی و یه گریدویو دیگه هم داخل تگ TemplateField مثل کد زیر قرار میدی:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false"
AlternatingRowStyle-BackColor="#C2D69B" RowStyle-BackColor="Control" DataKeyNames="id_Moshtari" onrowdatabound="GridView1_RowDataBound" >
<Columns>
<asp:TemplateField HeaderText="لیست فروش">
<ItemTemplate>مشتری:
<%# Eval("FirstName")%> <%# Eval("LastName")%>
<p>
</p>
<asp:GridView ID="GridView2" runat="server" DataKeyNames="id_Moshtari" AutoGenerateColumns="false" >
<Columns>
<asp:TemplateField HeaderText="لیست کالاها">
<ItemTemplate>
کد کالا:
<%# Eval("id_kala")%>
<br />
نام کالا:
<%# Eval("KalaName")%>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


خب می مونه قسمت کد نویسی سی شارپ
توی قسمت page_load صفحه باید گریدویو هارو بایند کنی تا به اون شکلی که می خوای در بیاد:

{
GridView1.DataSource = SelectData(SqlDataSource1.SelectCommand);
GridView1.DataBind();
}


کد مربوط به تابع SelectData:

private DataTable SelectData(string sQuery)
{

string strConnString = SqlDataSource1.ConnectionString;
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(strConnString))
{
SqlCommand cmd = new SqlCommand(sQuery);
using (SqlDataAdapter sda = new SqlDataAdapter())
{
cmd.Connection = con;
con.Open();
sda.SelectCommand = cmd;
sda.Fill(dt);
return dt;
}
}
}


حالا باید داخل رویداد onrowdatabound گریدویو اول کد زیر رو قرار بدی:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
string id_Moshtari = GridView1.DataKeys[e.Row.RowIndex].Value.ToString();
string sQuery = "SELECT id_kala,KalaName,id_Moshtari FROM tbl_kala WHERE id_Moshtari='" + id_Moshtari + "'";
GridView Kala = (GridView)e.Row.FindControl("GridView2");
Kala.DataSource = SelectData(sQuery);
Kala.DataBind();
}
}


بازم اگه می خواستی به جای گریدویو اول، datalist استفاده کنی ساختارش با گریدویو خیلی فرق نداره فقط باید تو کدنویسی سی شارپ به جای استفاده از خصوصیت row باید از item استفاده کنی