نمایش نتایج: از شماره 1 تا 2 , از مجموع 2

موضوع: حذف ركوردهاي هاي تيك خورده در repeater و Gridview

  1. #1
    عضو سایت
    گاه برای ساختن باید ویران کرد، گاه برای داشتن باید گذشت ، و گاه در اوج تمنا باید نخواست!
    تاریخ عضویت
    Jun 2011
    محل سکونت
    یک خانه
    نوشته ها
    25,040
    تشکر تشکر کرده 
    3,527
    تشکر تشکر شده 
    5,275
    تشکر شده در
    3,184 پست
    حالت من : Akhmoo
    قدرت امتیاز دهی
    4452
    Array

    حذف ركوردهاي هاي تيك خورده در repeater و Gridview

    حذف ركوردهاي هاي تيك خورده در 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 قرار بديد.

    موفق باشيد.
    [دل خوش از آنیم که حج میرویم؟ ..]
    غافل از آنیم که کج میرویم



    [SIGPIC][/SIGPIC]


  2. #2
    عضو سایت
    گاه برای ساختن باید ویران کرد، گاه برای داشتن باید گذشت ، و گاه در اوج تمنا باید نخواست!
    تاریخ عضویت
    Jun 2011
    محل سکونت
    یک خانه
    نوشته ها
    25,040
    تشکر تشکر کرده 
    3,527
    تشکر تشکر شده 
    5,275
    تشکر شده در
    3,184 پست
    حالت من : Akhmoo
    قدرت امتیاز دهی
    4452
    Array

    پیش فرض

    حذف ركوردهاي هاي تيك خورده در 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

    موفق باشيد.
    [دل خوش از آنیم که حج میرویم؟ ..]
    غافل از آنیم که کج میرویم



    [SIGPIC][/SIGPIC]


برچسب ها برای این تاپیک

علاقه مندی ها (بوک مارک ها)

علاقه مندی ها (بوک مارک ها)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست در پست خود ضمیمه کنید
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

http://www.worldup.ir/