deaktivieren Sie ein Kontrollkästchen in der gridview

Ich habe ein gridview, in der die erste Spalte eine checkbox. Das raster zeigt einen oder mehrere Datensätze, die zurückgegeben werden aus der Datenbank nach dem Benutzer suchen (das raster gefüllt wird in eine proc-genannt "protected void DisplayGridData()"). Wenn der "inaktive" Spalte, Datensatz "1", ich würde gerne die checkbox deaktiviert. Wie kann ich erreichen, dass?

Den html-code ist:

            <asp:GridView ID="gvCanadaOrders" runat="server" AutoGenerateColumns="False" CellPadding="2" CellSpacing="2" GridLines="None" Width="100%" AllowPaging="True" PageSize="30"
                onpageindexchanging="gvCanadaOrders_PageIndexChanging" ForeColor="#333333" DataKeyNames="RecID">
                <Columns>
                    <asp:TemplateField HeaderText="Disable" >
                        <ItemTemplate>
                            <asp:CheckBox ID="cbPONumber" runat="server"/>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <%--<asp:BoundField DataField="Rec_ID" HeaderText="Rec_ID" HtmlEncode="False"></asp:BoundField>--%>
                    <asp:BoundField DataField="Inactive" HeaderText="Inactive" HtmlEncode="False" ></asp:BoundField>
                    <asp:BoundField DataField="PO_Number" HeaderText="PO Number" HtmlEncode="False" ></asp:BoundField>
                    <asp:BoundField DataField="VENDOR_NAME" HeaderText="Vendor Name"></asp:BoundField>
                    <asp:BoundField DataField="ITEM_DESC" HeaderText="Item Description"></asp:BoundField>
                    <asp:BoundField DataField="MFG_PART_NO" HeaderText="MFG Part Number"></asp:BoundField>
                    <asp:BoundField DataField="System_DATE" HeaderText="System Date"></asp:BoundField>
                    <asp:BoundField DataField="PRINT_DATE" HeaderText="Print Date"></asp:BoundField>
                </Columns>
                <FooterStyle CssClass="GridFooter" BackColor="#990000" Font-Bold="True" ForeColor="White" />
                <PagerStyle CssClass="GridPager" ForeColor="#333333" BackColor="#FFCC66" HorizontalAlign="Center" />
                <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="Navy" />
                <HeaderStyle CssClass="GridHeader" BackColor="#990000" Font-Bold="True" ForeColor="White"  />
                <RowStyle CssClass="GridItem" BackColor="#FFFBD6" ForeColor="#333333" />
                <AlternatingRowStyle  CssClass="GridAltItem" BackColor="White" />
            </asp:GridView>

Den code, lädt das gridview wird:

protected void btnDisable_Click(object sender, EventArgs e)    
{
    try
    {
        string strPONumber = "";
        foreach (GridViewRow gvr in gvCanadaOrders.Rows)
        {
            if (((CheckBox)gvr.FindControl("cbPONumber")).Checked == true)
            {
                string strRec_ID = gvCanadaOrders.DataKeys[gvr.RowIndex].Value.ToString();

                //Update table here, diable inactive field;
                SqlConnection con = new SqlConnection(strConn);
                string sqlCanadaOrdersUpdate = "usp_CanadaOrders_Close";
                SqlCommand cmdCanadaOrdersUpdate = new SqlCommand(sqlCanadaOrdersUpdate, con);

                cmdCanadaOrdersUpdate.CommandType = CommandType.StoredProcedure;

                cmdCanadaOrdersUpdate.Parameters.Add(new SqlParameter("@rec_ID", SqlDbType.VarChar, 50));
                cmdCanadaOrdersUpdate.Parameters["@rec_ID"].Value = strRec_ID;

                cmdCanadaOrdersUpdate.Parameters.Add(new SqlParameter("@usr_id", SqlDbType.VarChar, 50));
                cmdCanadaOrdersUpdate.Parameters["@usr_id"].Value = User.Identity.Name.Substring(User.Identity.Name.Length - 7);

                con.Open();

                SqlDataAdapter sqladaCanadaOrdersUpdate = new SqlDataAdapter(cmdCanadaOrdersUpdate);
                cmdCanadaOrdersUpdate.ExecuteNonQuery();
            }
            ClientScript.RegisterStartupScript(GetType(), "alert", "alert('Purchase Order " + strPONumber + " has been disabled.');", true);
        }
    }

Den code für gridview databoundrow ist:

void gvCanadaOrders_RowDataBound(Object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //Display the company name in italics.
        e.Row.Cells[1].Text = "<i>" + e.Row.Cells[1].Text + "</i>";
    }
}
InformationsquelleAutor user279521 | 2010-07-08
Schreibe einen Kommentar