0

ドロップダウンリストがあります。dropdownlist のインデックスを変更すると、asp.net gridview に行が入力されます。

グリッドビュー全体を更新する代わりに、ドロップダウン リストの値が変更されるたびにグリッドビューに新しい行を追加したいと考えています。

誰でもそれができる方法を知っていますか? 私は以下のコードを持っています:

aspx:

<table>
        <tr>
            <td>
                <div>
                    <asp:Label ID="lblClient" runat="server" Text="Client :" CssClass="label" ForeColor="Black"></asp:Label>
                    <asp:DropDownList ID="ddlClient" runat="server" AppendDataBoundItems="true" AutoPostBack="true" OnSelectedIndexChanged="ddlClient_SelectedIndexChanged">
                        <asp:ListItem Text="ALL" Value="0"></asp:ListItem>
                    </asp:DropDownList>
                </div>
            </td>
        </tr>
        <tr>
        <td>
        <asp:GridView ID="gvMainLog" runat="server" Visible="true" AllowSorting="True" AutoGenerateColumns="False"AllowPaging="true">
                    <Columns>
                    <asp:TemplateField ShowHeader="False">
                        <ItemTemplate>
                                   <div id='<%# "myRow" + Container.DataItemIndex %>'> 
                                   <asp:Literal ID="ltId" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Instruction")%>'></asp:Literal>
                                 <img src="../Images/KnobRed.png" onclick='<%# "deleteRow(\"myRow" + Container.DataItemIndex+"\")" %>'/> </div>
                        </ItemTemplate>
                    </asp:TemplateField>
                    </Columns>
                    </asp:GridView>
        </td>
        </tr>
    </table>

aspx.cs

  protected void ddlClient_SelectedIndexChanged(object sender, EventArgs e)
        {
            gvMainLog.DataSource = GetDealerSetupUtilityByClientId(1,1);
            gvMainLog.DataBind();

        }

JavaScript

<script type="text/javascript">
    function deleteRow(rowId) {
    $("#" + rowId).remove();
}
</script>
4

2 に答える 2

1

これをjavascriptで試してください

//新しい行を追加

function AddNewRecord()
        {
            var grd = document.getElementById('GridView1');
            var tbod=grd.rows[0].parentNode;
            var newRow=grd.rows[grd.rows.length - 1].cloneNode(true);
            tbod.appendChild(newRow);
            return false;

        }

//古い行を削除

function delrow(rowindex)

{

var gridID=document.getElementById("<%=grid.ClientID %>");

gridID.deleteRow(rowindex+1);     

return false;

}
于 2013-08-23T18:02:51.197 に答える
0

これはおそらくコメントである必要がありますが、コード行を表示したい

Container.DataItemIndexに置き換える必要が<%#DataBinder.Eval(Container, "DataItemIndex")%>あり、関数 deleteRow が出てくる必要があります。

onclick は次のようになります。

onclick="deleteRow(myRow + <%#DataBinder.Eval(Container, "DataItemIndex")%>"
于 2013-08-23T18:02:40.230 に答える