Создать TextBox или DropDownList на основе значения столбца - PullRequest
0 голосов
/ 13 сентября 2018

В моей таблице есть столбец с именем ColumnType.ColumnType должен иметь TextBox или DropDownlist на основе значений из столбца TypeID.Если значение в столбце TypeID равно 0,2,3, то должно появиться пустое текстовое поле, а если значение равно 1, пустой DDL должен отображаться на странице.

Так выглядит таблица при ее создании.из кода: https://jsfiddle.net/769825dz/7/

Это код C #, где я просто беру значения из процедуры и отправляю их для отображения в aspx столбец за столбцом:

LogicTableAdapters.getCharacteristicTableAdapter getObChar = new LogicTableAdapters.getCharacteristicTableAdapter();

DataTable dtObChar = getObChar.getCharacteristicTableAdapter(Convert.ToInt32("1"));

DataTable dtCh = new DataTable();
dtCh.Columns.AddRange(new DataColumn[4]{ new DataColumn("CharacteristicID", typeof(string)), new DataColumn("CharacteristicName", typeof(string)), new DataColumn("ColumnType", typeof(string)), new DataColumn("TypeID", typeof(int)),});

foreach (DataRow dr in dtObChar.Rows)
{
    dtCh.Rows.Add(dr["CharacteristicID"].ToString(), dr["CharacteristicName"].ToString(), dr["ColumnType"] == DBNull.Value ? null : dr["TypeID"].ToString());
}

gvObjCharacteristic.DataSource = dtCh;
gvObjCharacteristic.DataBind();

Это aspxчасть, где gridview генерируется из процедуры:

 <asp:GridView ID="gvObjCharacteristic" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="False">
    <AlternatingRowStyle BackColor="White" />
    <Columns>

        <asp:TemplateField HeaderText="CharacteristicID">
            <ItemTemplate>
                <asp:Label ID="CharacteristicID" runat="server" class="ObjekatID" Width="118px" Height="26px" Style="text-align: center" Font-Names="Georgia" margin-Left="100px" Text='<%# Bind("CharacteristicID") %>'></asp:Label>


            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="CharacteristicName">
            <ItemTemplate>

                <asp:Label ID="CharacteristicName" runat="server" Width="118px" Height="26px" Style="text-align: center" Font-Names="Georgia" margin-Left="100px" Text='<%# Bind("CharacteristicName") %>'></asp:Label>

            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="ColumnType">
            <ItemTemplate>

                <asp:Label ID="ColumnType" runat="server" Width="118px" Height="26px" Style="text-align: center" Font-Names="Georgia" margin-Left="100px" Text='<%# Bind("ColumnType") %>'></asp:Label>

            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="TypeID">
            <ItemTemplate>

                <asp:Label ID="TypeID" runat="server" Width="118px" Height="26px" Font-Names="Georgia" margin-Left="100px" Text='<%# Bind("TypeID") %>'></asp:Label>

            </ItemTemplate>
        </asp:TemplateField>

    </Columns>
</asp:GridView>

Я думаю, мне нужен код в части c #.

Может кто-нибудь помочь мне с этим?

1 Ответ

0 голосов
/ 13 сентября 2018

Вы можете установить свойство Visible TextBox или DropDownList на основе значения столбца.

<asp:TemplateField>
    <ItemTemplate>

        <asp:TextBox ID="TextBox1" runat="server" Visible='<%# Convert.ToInt32(Eval("TypeID")) != 1 %>'></asp:TextBox>

        <asp:DropDownList ID="DropDownList1" runat="server" Visible='<%# Convert.ToInt32(Eval("TypeID")) == 1 %>'>
            <asp:ListItem Text="Value 1" Value="1"></asp:ListItem>
            <asp:ListItem Text="Value 2" Value="2"></asp:ListItem>
            <asp:ListItem Text="Value 3" Value="3"></asp:ListItem>
        </asp:DropDownList>

    </ItemTemplate>
</asp:TemplateField>

И вам не нужно создавать новую таблицу данных, вы можете сделать это

gvObjCharacteristic.DataSource = getObChar.getCharacteristicTableAdapter(Convert.ToInt32("1"));;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...