PDA

View Full Version : سوال: کار با grid view



veniz2008
چهارشنبه 06 مرداد 1389, 16:18 عصر
سلام،من در صفحه وب خودم از یک grid view و از templatefield یک دکمه واسه جدول درسم اضافه کردم،حالا فرض کنید که من در جدولم 5 تا درس وجود داره که جلوی هر کدومش یک دکمه انتخاب وجود داره،درصورتی که با اضافه کردن دکمه از طریق edit template و دابل کلیک بر روی دکمه ای که ایجاد کردم فقط یک جا واسه وارد کردن دستورات وجود داره.بطور خلاصه بگم چطور میتونم که برای چند درس با مشخصات متفاوت داخل یک button برنامه نویسی کنم تا با زدن اون دکمه،درس مورد نظر ثبت بشه،تشکر

fa_karoon
جمعه 08 مرداد 1389, 10:56 صبح
دوست عزيز شما تصورتون از يك جا براي كد نوشتن اشتباه است ببينيد يه قطعه كد مي ذارم شايد به دردتون بخوره اين كد به اين صورت هست كه دو تا ImageButton گذاشته ايم كه با كليك روي يكي عمليات خذف و با كليك روي ديگري عمليات ويرايش انجام مي شود كد رو بخون سعي مي كنم در اولين فرصت توضيح بيشتري براش بنويسم


<asp:GridViewID="GridView1"runat="server"CellPadding="4"ForeColor="#333333"dir="ltr"
GridLines="None"AutoGenerateColumns="False"
BorderColor="Black"BorderWidth="1px"CssClass="gridveiw"
onselectedindexchanged="GridView1_SelectedIndexChanged"
DataSourceID="SqlDataSource1">
<FooterStyleBackColor="#507CD1"Font-Bold="True"ForeColor="White"/>
<RowStyleBackColor="#EFF3FB"/>
<Columns>
<asp:TemplateFieldHeaderText="¥¨ه">
<ItemTemplate>
<asp:ImageButtonID="ImageButton2"runat="server"CommandName="select"
CssClass="pic1"ImageUrl="~/image/delete2.gif"
onmouseout="change(this, 'pic1');"onmouseover="change(this, 'pic2');"
onclick="ImageButton2_Click"/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateFieldHeaderText="يی©ںی¬">
<ItemTemplate>
<asp:ImageButtonID="ImageButton1"runat="server"
ImageUrl="~/image/manager.gif"CommandName="select"
CssClass="pic1"onmouseout="change(this, 'pic1');"
onmouseover="change(this, 'pic2');"onclick="ImageButton1_Click"/>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundFieldDataField="name"HeaderText="ëںê ©¬¢ى"SortExpression="name"/>
<asp:BoundFieldDataField="id"InsertVisible="False"
SortExpression="id">
<ControlStyleWidth="0px"/>
<FooterStyleWidth="0px"/>
<HeaderStyleWidth="0px"/>
<ItemStyleWidth="0px"Font-Size="0pt"/>
</asp:BoundField>
</Columns>
<PagerStyleBackColor="#2461BF"ForeColor="White"HorizontalAlign="Center"/>
<EmptyDataTemplate>
<asp:ButtonID="Button3"runat="server"Text="Button"/>
</EmptyDataTemplate>
<SelectedRowStyleBackColor="#D1DDF1"Font-Bold="True"ForeColor="#333333"/>
<HeaderStyleBackColor="#507CD1"Font-Bold="True"ForeColor="White"
CssClass="gridveiw"Font-Names="Tahoma"Font-Size="Small"/>
<EditRowStyleBackColor="#2461BF"/>
<AlternatingRowStyleBackColor="White"/>
</asp:GridView>
<asp:SqlDataSourceID="SqlDataSource1"runat="server"
ConnectionString="<%$ ConnectionStrings:aminConnectionString %>"
SelectCommand="SELECT [id], [name] FROM [©¬¢ى] WHERE ([del] = @del)">
<SelectParameters>
<asp:ParameterDefaultValue="false"Name="del"Type="Boolean"/>
</SelectParameters>
</asp:SqlDataSource>


حالا كدي كه در حالت Code_Behind بايد بنويسي


int k = 0;
protectedvoid ImageButton2_Click(object sender, ImageClickEventArgs e)
{
k = 2;
}
protectedvoid ImageButton1_Click(object sender, ImageClickEventArgs e)
{
k = 1;
}

protectedvoid GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
if (k == 1)
{
GridView1.Enabled = false;
edit.Visible = true;
TextBox1.Text= set_textbox();
TextBox1.Focus();
}
elseif (k == 2)
{
GridView1.Enabled = false;
delete.Visible = true;
TextBox2.Text = set_textbox();
Button4.Focus();
}
}

protectedvoid Button1_Click(object sender, EventArgs e)
{
string str = GridView1.Rows[GridView1.SelectedIndex].Cells[3].Text;
string str1 = @"Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Documents and Settings\amin.AMIN-22DF05570F\My Documents\amin.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection cn = newSqlConnection(str1);
string sqlstr = "UPDATE ©¬¢ى SET name = '" + TextBox1.Text + "' where id='" + str + "'";
SqlCommand com = newSqlCommand(sqlstr, cn);
cn.Open();
com.ExecuteNonQuery();
cn.Close();
GridView1.DataBind();
edit.Visible = false;
GridView1.SelectedIndex = -1;
GridView1.Enabled = true;
}

string set_textbox()
{
string s = "";
string str = GridView1.Rows[GridView1.SelectedIndex].Cells[3].Text;
string str1 = @"Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Documents and Settings\amin.AMIN-22DF05570F\My Documents\amin.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection cn = newSqlConnection(str1);
string sqlstr = "select name from ©¬¢ى where id='" + str + "'";
SqlCommand com = newSqlCommand(sqlstr, cn);
cn.Open();
SqlDataReader dr = com.ExecuteReader();
if (dr.Read())
s = dr[0].ToString();
dr.Close();
cn.Close();
return s;
}

protectedvoid Button4_Click(object sender, EventArgs e)
{
delete.Visible = false;
GridView1.SelectedIndex = -1;
GridView1.Enabled = true;
}
protectedvoid Button3_Click(object sender, EventArgs e)
{
string str = GridView1.Rows[GridView1.SelectedIndex].Cells[3].Text;
string str1 = @"Data Source=.\SQLEXPRESS;AttachDbFilename='C:\Documents and Settings\amin.AMIN-22DF05570F\My Documents\amin.mdf';Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection cn = newSqlConnection(str1);
string sqlstr = "UPDATE ©¬¢ى SET del = 'True' where id='" + str + "'";
SqlCommand com = newSqlCommand(sqlstr, cn);
cn.Open();
com.ExecuteNonQuery();
cn.Close();
GridView1.DataBind();
delete.Visible = false;
GridView1.SelectedIndex = -1;
GridView1.Enabled = true;
if (GridView1.Rows.Count == 0)
{
Label1.Visible = true;
GridView1.Visible = false;
}
}


با زدن دكمه ويرايش يا حذف اطلاعات اون ركورد در دو TextBox نمايش داده مي شود سپس كاربر با زدن دكمه هايي يا حذف مي كند يا عمليات ويرايش را انجام مي دهد فقط يه موضوعي ما تو اين كد هنگام حذف، حذف منطقي انجام داديم كاملا حذف نكرديم
بعد اينكه اگه مشكل حل نشد در اولين فرصت فايل هاش رو به زبان VB براتون ضميمه ميكنم
و يه نكته ديگه اينكه تو اين كد دو كليد براي انصراف قرار داده شده يكي در هنگام حذف يكي در هنگام ويرايش
موفق باشيد