PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : حذف ركوردهاي هاي تيك خورده در repeater و Gridview



shirin71
08-07-2011, 08:18 AM
حذف ركوردهاي هاي تيك خورده در Gridview :

براي اينكار ابتدا يك صفحه ي webform.aspx ايجاد كنيد.
در صفحه يك گريدويو و يك sqlDataSource و يك دكمه قرار دهيد.

sqlDataSource رو به بانك موردنظرتون ربط داده و خاصيت DataSourceID مربوط به گريدويو رو برابر SqlDataSource1 قرار بديد.

به گريدويو خود يك ستون اضافه كنيد به طريقه زير:
به قسمت سورس رفته، و در بين تگ هاي gridview خود تگ <Columns> </Columns> قرار دهيد سپس يك TemplateField اضافه كنيد. در نهايت كدي مشابه زير ايجاد كنيد:




<asp:GridView ID="GridView1" runat="server" DataKeyNames="NewsId" DataSourceID="Sqldatasource1">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
<asp:CheckBox ID="CheckAll" onclick="return check_uncheck (this );" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:Label ID="nID" Visible="false" Text='<%# DataBinder.Eval (Container.DataItem, "NewsId") %>'
runat="server" />
<asp:CheckBox ID="deleteRec" onclick="return check_uncheck (this );" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>

</asp:GridView>




در اينجا DataKeyNames برابر فيلد كليد در جدول موردنظر قرار مي دهيم.
در <HeaderTemplate> يك چكباكس گذاشته شده جهت انتخاب تمامي سطرها مي باشد .
در رويداد onclick يك تابع جاواسكريپت فراخواني ميكنيم كه توسط اين تابع تمامي سطرها انتخاب/لغوانتخاب مي شوند.

در <ItemTemplate> چك باكسي كه قرار داديم براي هر سطر مي باشد.

كدهاي جاواسكريپت زير را در تگ bodyقرار دهيد:





<script type="text/javascript">
function check_uncheck (Val)
{
var ValChecked = Val.checked;
var ValId =Val.id;
var frm = document.forms[0];
// Loop through all elements
for (i=0; i<frm.length; i++)
{
// Look for Header Template's Checkbox
if (this!=null)
{ if (ValId.indexOf ('CheckAll') != -1)
{
// Check if main checkbox is checked, then select or deselect datagrid checkboxes
if(ValChecked) frm.elements[i].checked = true;
else frm.elements[i].checked = false;
}
else if (ValId.indexOf ('deleteRec') != -1)
{
// Check if any of the checkboxes are not checked, and then uncheck top select all checkbox
if(frm.elements[i].checked == false) frm.elements[1].checked = false; }
}// if
}// for
}// function
function confirmMsg (frm)
{
// loop through all elements
for (i=0; i<frm.length; i++)
{
// Look for our checkboxes only
if (frm.elements[i].name.indexOf("deleteRec") !=-1)
{
// If any are checked then confirm alert, otherwise nothing happens
if(frm.elements[i].checked) return confirm ('Are you sure you want to delete your selection(s)?')
}
}
}
</script>



در رويداد onclick دكمه دستورات زير روبنويسيد:





Dim gvIDs As String = ""
Dim chkBox As Boolean = False
For Each gv As GridViewRow In GridView1.Rows
Dim deleteChkBxItem As CheckBox = CType(gv.FindControl("deleteRec"), CheckBox)
If deleteChkBxItem.Checked Then
chkBox = True
gvIDs += CType(gv.FindControl("nID"), Label).Text.ToString + ","
End If
Next
Dim cn As SqlConnection = New SqlConnection(Sqldatasource1.ConnectionString)
If chkBox Then
Try
Dim deleteSQL As String = "DELETE from news WHERE newsid IN (" + gvIDs.Substring(0, gvIDs.LastIndexOf(",")) + ")"
Dim cmd As SqlCommand = New SqlCommand(deleteSQL, cn)
cn.Open()
cmd.ExecuteNonQuery()
GridView1.DataBind()
Catch err As SqlException
Response.Write(err.Message.ToString)
Finally
cn.Close()
End Try
End If




در ضمن Imports System.Data.SqlClient رو در ابتداي صفحه ي code-behind قرار بديد.

موفق باشيد.

shirin71
08-07-2011, 08:19 AM
حذف ركوردهاي هاي تيك خورده در repeater :

صفحه ي وب فرمي رو ايجاد كنيد.

يك كنترل Repeater,sqlDatasourceو يك كنترلButton در صفحه قرار بديد.

سورس خود رو مشابه زير تنظيم كنيد:





<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" Text='<%#Eval("NewsID")%>'
CssClass="HiddenText" runat="server" />
<%#Eval("title")%>
<br />
<br />
</ItemTemplate>
</asp:Repeater>
</div>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:myConnectionString %>"
SelectCommand="SELECT * FROM [news]"></asp:SqlDataSource>
<asp:Button ID="Button1" runat="server" Text="Del" />




استايل زير رو در بين تگ headصفحه تون قرار دهيد:




<style type="text/css">
.HiddenText label {display:none;}
</style>


در رويداد كليك دكمه كدهاي زير رو بنويسيد:





Dim gvIDs As String = ""
Dim chkBox As Boolean = False
For Each gv As RepeaterItem In Repeater1.Items
Dim deleteChkBxItem As CheckBox = CType(gv.FindControl("CheckBox1"), CheckBox)
If deleteChkBxItem.Checked Then
chkBox = True
gvIDs += deleteChkBxItem.Text.ToString + ","
End If
Next
Dim cn As SqlConnection = New SqlConnection(SqlDataSource1.ConnectionString)
If chkBox Then
Try
Dim deleteSQL As String = "DELETE from news WHERE newsid IN (" + gvIDs.Substring(0, gvIDs.LastIndexOf(",")) + ")"
Dim cmd As SqlCommand = New SqlCommand(deleteSQL, cn)
cn.Open()
cmd.ExecuteNonQuery()
Repeater1.DataBind()
Catch err As SqlException
Response.Write(err.Message.ToString)
Finally
cn.Close()
End Try
End If



موفق باشيد.