Saturday 18 April 2015

Get Button Image Visibility from Table

Aku ingin menampilkan data dari 2 tabel sekaligus pada sebuah Gridview di webform ASP.Net,
Tabel 1. Tabel M_Access yang menampilkan Access_ID, Access_Name dan Access_Active.
Tabel 2. Tabel M_Access_Menu yaitu button update dan button delete disebelah kanan.
Aku ingin mendapatkan nilai visible dari masing-masing button dari 2 buah kolom (Access_Edit, Access_Delete) yanag bernilai boolean dari tabel M_Access_Menu.

Langkah 1.
Menyajikan data dari tabel M_Access ke dalam DataTable.

Langkah 2.
Menyajikan 2 kolom tambahan pada DataTable dari tabel M_Access untuk menampung dua kolom dari M_Access_Menu.

Langkah 3.
Menyajikan data dari tabel M_Access_Menu ke dalam DataTable.

Langkah 4.
Memindahkan nilai dari kolom yang kita butuhkan di tabel M_Access_Menu ke dalam kolom tambahan DataTable M_Access.

kira-kira seperti ini Langkah 1 - Langkah 4
terdapat di m_access.aspx.cs






            DataSet dsSemuaData = new DataSet();
            DataSet dsAccessMenu = new DataSet();
            DataSet dsAccess = new DataSet();
            DataTable dtAccessMenu = new DataTable();
            DataView dvAccessMenu = new DataView();
            // Langkah 1
            dsAccess = access.GetDataAll();

            DataTable dtAccess = new DataTable();
            dtAccess = dsAccess.Tables[0];
          
             // Langkah 2
            // proses menambahkan kolom update, delete ke tabel M_Access

            dtAccess.Columns.Add("Access_isEdit", typeof(bool));
            dtAccess.Columns.Add("Access_isDelete", typeof(bool));
            dtAccess.Columns.Add("Access_isNew", typeof(bool));

            //dtAccess.Merge(dtSemuaData);

            foreach (string sAccessID in lstAccessID)
            {
                // Langkah 3
                dsSemuaData = access_menu.GetData(sAccessID, sNamaMenu);

                int jumlahRowDataSet = dsSemuaData.Tables.Count;

                DataTable dtSemuaData = new DataTable();
                dtSemuaData = dsSemuaData.Tables[0];
                int jmlahRowDataTable = dtSemuaData.Rows.Count;


                foreach (DataRow rowSemuaData in dtSemuaData.Rows)
                {
                    string rowdata = rowSemuaData["Access_ID"].ToString();

                    if (rowdata.Equals(DBNull.Value))
                    {
                      
                    }
                    else if (rowdata.Equals(sAccessID))
                    {
                        for (int i = 0; i < dtAccess.Rows.Count; i++)
                            {
                                // Langkah 4
                                dtAccess.Rows[i]["Access_isEdit"] = dtSemuaData.Rows[0]["Access_Edit"];
                                dtAccess.Rows[i]["Access_isDelete"] = dtSemuaData.Rows[0]["Access_Delete"];
                                dtAccess.Rows[i]["Access_isNew"] = dtSemuaData.Rows[0]["Access_New"];

                            }
                    }
                }
               
            }

            return dtAccess;

Langkah 5.
Sekarang giliran untuk pemanggilan kolom tambahan tadi di view/webform.
m_access.aspx

 <asp:GridView ID="GridViewAccess" runat="server" AutoGenerateColumns="False"  Width="100%" CssClass="table table-bordered table-striped gvstyling" AllowPaging="true" OnPageIndexChanging="GridViewAccess_PageIndexChanging" OnRowUpdating="update" DataKeyNames="Access_ID" OnRowEditing="edit" OnRowCancelingEdit="canceledit" OnRowDeleting="delete">
                    <Columns>
                          <asp:TemplateField HeaderText="Access ID" ItemStyle-Width="150">
                            <ItemTemplate>
                                <asp:Label ID="lblAccessID" runat="server" Text='<%# Eval("Access_ID") %>'></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="Access Name" ItemStyle-Width="150">
                            <ItemTemplate>
                                <asp:Label ID="lblAccessName" runat="server" Text='<%# Eval("Access_Name") %>'></asp:Label>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:TextBox ID="txtAccessName" runat="server" Text='<%# Eval("Access_Name") %>'></asp:TextBox>
                                <asp:RequiredFieldValidator ID="RequiredFieldValidatorAccessName" runat="server" ErrorMessage="Nama Access tidak boleh kosong" ControlToValidate="txtAccessName"></asp:RequiredFieldValidator>
                            </EditItemTemplate>
                           
                        </asp:TemplateField>

                        <asp:TemplateField HeaderText="Access Active" ItemStyle-Width="150">
                            <ItemTemplate>
                                <asp:Label ID="lblAccessActive" runat="server" Text='<%# Eval("Access_Active") %>' ></asp:Label>
                            </ItemTemplate>
                            <EditItemTemplate>
                                <asp:DropDownList id="ddlAccessActive" runat="server" CssClass="form-control">
                                        <asp:ListItem Value="True">Aktif</asp:ListItem>
                                        <asp:ListItem Value="False">Tidak Aktif</asp:ListItem>
                                    </asp:DropDownList>
                                <asp:RequiredFieldValidator ID="RequiredFieldValidatorAccessActive" runat="server" ErrorMessage="Access Active tidak boleh kosong" ControlToValidate="ddlAccessActive"></asp:RequiredFieldValidator>
                            </EditItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField>
                            <EditItemTemplate>
                                <asp:ImageButton ID="ButtonUpdate" runat="server" CommandName="Update"  Text="Update" ImageUrl="~/Images/update.png" Width="20px" Height="20px" ToolTip="Update" />
                                <asp:ImageButton ID="ButtonCancel" runat="server" CommandName="Cancel"  Text="Cancel" ImageUrl="~/Images/delete.png" Width="20px" Height="20px" ToolTip="Cancel"/>
                            </EditItemTemplate>
                            <ItemTemplate>
                                <asp:ImageButton ID="ButtonEdit" runat="server" CommandName="Edit" ImageUrl="~/Images/edit.png" Width="20px" Height="20px" Visible='<%# Eval("Access_isEdit").ToString().Equals("True")%>' ToolTip="Edit"/>
                                <asp:ImageButton ID="ButtonDelete" runat="server" CommandName="Delete"  Text="Delete" ImageUrl="~/Images/delete.png" Width="20px" Height="20px" Visible='<%# Eval("Access_isDelete").ToString().Equals("True")%>' ToolTip="Delete"/>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>


kira-kira seperti itu.. hehehheheh :D