簡體   English   中英

如何將項目從一個數據列表傳輸到另一數據列表?

[英]How to transfer item from one datalist to other datalist?

我有一個數據清單

 <asp:DataList ID="dlstImage" runat="server" RepeatDirection="Horizontal" RepeatColumns="5"
                                CellSpacing="8">
        <ItemTemplate>
           <asp:ImageButton ID="Image" runat="server" ImageUrl='<%#"~/Controls/ShowImage.ashx?FileName=" +DataBinder.Eval(Container.DataItem, "FilePath") %>'
                                        OnCommand="Select_Command" CommandArgument='<%# Eval("Id").ToString() +";"+Eval("FilePath")+";"+Eval("Index") %>' /><br />
           <asp:Label ID="lbl" runat="server" Text="Figure"></asp:Label><%# dlstImage.Items.Count + 1%>
        </ItemTemplate>
  </asp:DataList>

在通過uplodify上傳完成上傳后,我在其中綁定圖像,現在我又有一個數據列表,上下兩個btn,

<asp:ImageButton ID="ibtnMoveUp" runat="server" ImageUrl="~/App_Themes/Default/Images/moveup.bmp"
                        Style="height: 16px" ToolTip="MoveUp The Item" />
<asp:ImageButton ID="ibtnMoveDown" runat="server" ImageUrl="~/App_Themes/Default/Images/movedown.bmp"
                        ToolTip="MoveDown The Item" /> 

<asp:DataList ID="dlstSelectedImages" runat="server" RepeatDirection="Horizontal"
                                RepeatColumns="5" CellSpacing="8">
    <ItemTemplate>
        <asp:ImageButton ID="Image" runat="server" /><br />
        <asp:Label ID="lbl" runat="server" Text="Figure"></asp:Label><%# dlstImage.Items.Count + 1%>
    </ItemTemplate>
 </asp:DataList>

我的兩個數據列表都在同一個webuser控件中,即datalist1和datalist2,並且我上下有2個btn,當我從datalist1中選擇一個圖像並單擊btn時,則所選圖像應移至datalist2。 怎么做? 有人請幫助我,

您需要處理一個 DataList的ItemCommand事件,在該事件中,您必須將所選數據(圖像)復制到兩個 DataList另一個dataSource中,並從一個 DataList的數據源中刪除該項目。

標記:

<asp:DataList 
            ID="DataList1" 
            runat="server"
            OnItemCommand="PerformMove" 
            >
        <ItemTemplate>
        <br /><%#Eval("Text") %>
        <asp:Button ID="btn1" 
                runat="server" 
                Text="Move"
                CommandName="cmd"
                CommandArgument='<%#Eval("Text") %>'
                />

        </ItemTemplate>
</asp:DataList>
<asp:DataList ID="DataList2" runat="server">
            <ItemTemplate>
            <br /><%#Eval("Text") %>
            </ItemTemplate>
</asp:DataList>

后台代碼(.cs)

public class Data
    {
        public string Text { get; set; }
        public override int GetHashCode()
        {
            return Text.GetHashCode();
        }
        public override bool Equals(object obj)
        {
            return GetHashCode() == obj.GetHashCode();
        }
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            List<Data> list1 = new List<Data >()
            {
                 new Data() { Text="One"},
                 new Data() { Text="Two"},
                 new Data() { Text="Three"},
            };
            List<Data> list2 = new List<Data>();
            Session["list1"] = list1;
            Session["list2"] = list2;

            DataList1.DataSource = Session["list1"];
            DataList1.DataBind();

            DataList2.DataSource = Session["list2"];
            DataList2.DataBind();
        }
    }
    protected void PerformMove(object source, DataListCommandEventArgs e)
    {
        if (e.CommandName == "cmd")
        {
            List<Data> list1 = Session["list1"] as List<Data>;
            List<Data> list2 = Session["list2"] as List<Data>;

            list1.Remove(new Data() { Text=e.CommandArgument.ToString() });
            list2.Add(new Data() { Text = e.CommandArgument.ToString() });
            DataList1.DataSource = Session["list1"];
            DataList1.DataBind();

            DataList2.DataSource = Session["list2"];
            DataList2.DataBind();
        }
    }

我正在使用此代碼,它對我來說效果很好。

    ArrayList ImgArry = new ArrayList();
    path = objGetBaseCase.GetImages(TotImgIds);
    ImgArry.Add(SelImgId);
    ImgArry.Add(SelImgpath);//image name
    ImgArry.Add(SelImgName);//image path
    //path.Remove(ImgArry);
    List<ArrayList> t = new List<ArrayList>();
    if (newpath.Count > 0)
        t = newpath;
    t.Add(ImgArry);
    newpath = t;
    for (int i = 0; i < newpath.Count; i++)
    {
        ArrayList alst = newpath[i];
        newtb.Rows.Add(Convert.ToInt32(alst[0]), alst[1].ToString(), alst[2].ToString(), i);

    }
    dlstSelectedImages.DataSource = newtb;
    DataBind();

    path = objGetBaseCase.GetImages(TotImgIds);
    for (int i = 0; i < path.Count; i++)
    {
        ArrayList alst = path[i];
        tb.Rows.Add(Convert.ToInt32(alst[0]), alst[1].ToString(), alst[2].ToString(), i);

    }
    dlstImage.DataSource = tb;
    DataBind();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM