A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

chenxiaohuancxh

初级黑马

  • 黑马币:1

  • 帖子:5

  • 精华:0

5黑马币
从数据库查询出的内容在Table里,然后从Table放入repeater控件,查询出的内容有两列,repeater控件有好几列,怎么让查询出的内容放在repeater控件相应的列里??

   string strSelect = "select sku,qty from PUR_detail where id='{0}'";
            string sql = string.Format(strSelect, id);
            myCom.CommandType = CommandType.Text;
            myCom.CommandText = sql;  myDa = new SqlDataAdapter();
            myDa.SelectCommand = myCom;
            myDs = new DataSet();
            myDa.Fill(myDs, "DS_PUR_detail");
         
            this.rpt.DataSource = myDs.Tables["DS_PUR_detail"];         //myDs.Tables[0].DefaultView;
            this.rpt.DataBind();

8 个回复

倒序浏览
亲,前台你这么绑定就行,主要是<%#Eval("name") %>来获取数据表的字段绑定
<asp:Repeater ID="userRepeat" runat="server" OnItemCommand="userRepeat_ItemCommand" OnItemDataBound="userRepeat_ItemDataBound">  
            <HeaderTemplate>  
                <table border="1" style="width:1000px;text-align:center;border-collapse:collapse;">  
                    <thead style="background-color:red;">  
                        <tr>  
                            <th>ID</th>  
                            <th>内容</th>  
                            <th>操作</th>  
                        </tr>  
                    </thead>  
            </HeaderTemplate>  
            <ItemTemplate>  
                <asp:Panel ID="plItem" runat="server">  
                    <tr>  
                        <td><asp:Label runat="server" ID="lblID" Text='<%#Eval("id") %>'></asp:Label></td>  
                        <td><%#Eval("name") %></td>  
                        <td>  
                            <asp:LinkButton ID="lbtEdit" CommandName="Edit" CommandArgument='<%#Eval("id") %>' runat="server">编辑</asp:LinkButton>  
                            <asp:LinkButton ID="lbtDelete" CommandName="Delete" CommandArgument='<%#Eval("id") %>' runat="server">删除</asp:LinkButton>  
                        </td>  
                    </tr>  
                </asp:Panel>  
                <asp:Panel ID="plEdit" runat="server">  
                    <tr>  
                        <td><asp:Label runat="server" ID="Label1" Text='<%#Eval("id") %>'></asp:Label></td>  
                        <td><asp:TextBox ID="txtName" runat="server" Text='<%#Eval("name") %>'></asp:TextBox></td>  
                        <td>  
                            <asp:LinkButton ID="lbtCancel" CommandName="Cancel" CommandArgument='<%#Eval("id") %>' runat="server">取消</asp:LinkButton>  
                            <asp:LinkButton ID="lbtUpdate" CommandName="Update" CommandArgument='<%#Eval("id") %>' runat="server">更新</asp:LinkButton>  
                        </td>  
                    </tr>  
                </asp:Panel>  
            </ItemTemplate>  
            <FooterTemplate>  
                </table>  
            </FooterTemplate>  
        </asp:Repeater>  
回复 使用道具 举报
jiao731097245 发表于 2015-11-10 10:21
亲,前台你这么绑定就行,主要是来获取数据表的字段绑定
  
              

我的是这样的,直接在这个上面改需要怎么改呢?从数据库查询出来的是sku和qty,把这两列放到对应的列里,要怎么做呢?

<asp:Repeater ID="rpt" runat ="server" OnItemCommand="rpt_ItemCommand" OnItemDataBound="rpt_ItemDataBound">
        <HeaderTemplate>
            <tr><td>编号</td><td>品名</td><td>型号</td><td>尺寸</td><td>规格</td><td>采购数量</td><td>入库数量</td><td>操作</td></tr>
        </HeaderTemplate>
        <ItemTemplate>
            <tr><td>
            <asp:TextBox ID ="sku" runat ="server" AutoPostBack="True" /></td>
            <td><asp:TextBox ID ="name" runat ="server" ReadOnly="True"/></td>
            <td><asp:TextBox ID ="model" runat ="server" ReadOnly="True"/></td>
            <td><asp:TextBox ID ="size" runat ="server" ReadOnly="True"/></td>
            <td><asp:TextBox ID ="spec" runat ="server" ReadOnly="True"/></td>
            <td><asp:TextBox ID ="pur_qty" runat ="server" ReadOnly="True"/></td>
            <td><asp:TextBox ID ="cin_qty" runat ="server" /></td>
                <td><asp:Button ID ="btnDelete" Text ="删除" runat ="server" OnClick="ButtonDelete_Click" UseSubmitBehavior="false"/></td>
                </tr>
        </ItemTemplate>
         
    </asp:Repeater>
回复 使用道具 举报
chenxiaohuancxh 发表于 2015-11-10 10:58
我的是这样的,直接在这个上面改需要怎么改呢?从数据库查询出来的是sku和qty,把这两列放到对应的列里, ...

替换成我这样的就行了。

<asp:Repeater ID="rpt" runat ="server" OnItemCommand="rpt_ItemCommand" OnItemDataBound="rpt_ItemDataBound">
        <HeaderTemplate>
            <tr><td>编号</td><td>品名</td><td>型号</td><td>尺寸</td><td>规格</td><td>采购数量</td><td>入库数量</td><td>操作</td></tr>
        </HeaderTemplate>
        <ItemTemplate>
            <tr><td>
            <asp:TextBox ID ="sku" runat ="server" Text='<%#Eval("sku") %>'  /></td>
            <td><asp:TextBox ID ="name" runat ="server"  Text='<%#Eval("name") %>'/></td>
            <td><asp:TextBox ID ="model" runat ="server"  Text='<%#Eval("model") %>'/></td>
            <td><asp:TextBox ID ="size" runat ="server"  Text='<%#Eval("size") %>'/></td>
            <td><asp:TextBox ID ="spec" runat ="server"   Text='<%#Eval("spec") %>'/></td>
            <td><asp:TextBox ID ="pur_qty" runat ="server" Text='<%#Eval("pur_qty") %>'/></td>
            <td><asp:TextBox ID ="cin_qty" runat ="server"   Text='<%#Eval("cin_qty") %>'/></td>
                <td><asp:Button ID ="btnDelete" Text ="删除" runat ="server" OnClick="ButtonDelete_Click" UseSubmitBehavior="false"/></td>
                </tr>
        </ItemTemplate>
         
    </asp:Repeater>
回复 使用道具 举报
jiao731097245 发表于 2015-11-10 11:05
替换成我这样的就行了。

还是不行,他说DataBinding:“System.Data.DataRowView”不包含名为“sku”的属性。前辈请指教
回复 使用道具 举报
chenxiaohuancxh 发表于 2015-11-10 11:47
还是不行,他说DataBinding:“System.Data.DataRowView”不包含名为“sku”的属性。前辈请指教 ...

把你后台,前台代码都正过来。这样看不好。
回复 使用道具 举报
jiao731097245 发表于 2015-11-10 12:00
把你后台,前台代码都正过来。这样看不好。

    前辈请看: <asp:Label ID="Label2" runat="server" Text="采购单编号"></asp:Label>
        <asp:TextBox ID="TextBox2" runat="server" AutoPostBack="True"
            ontextchanged="TextBox2_TextChanged"></asp:TextBox>
        <table style="text-align: center">
     <asp:Repeater ID="rpt" runat ="server" OnItemCommand="rpt_ItemCommand" OnItemDataBound="rpt_ItemDataBound">
        <HeaderTemplate>
            <tr><td>编号</td><td>品名</td><td>型号</td><td>尺寸</td><td>规格</td><td>采购数量</td><td>入库数量</td><td>操作</td></tr>
        </HeaderTemplate>
        <ItemTemplate>
            <tr><td>
            <asp:TextBox ID ="sku" runat ="server" Text='<%#Eval("sku") %>'  /></td>
            <td><asp:TextBox ID ="name" runat ="server"  Text='<%#Eval("name") %>'/></td>
            <td><asp:TextBox ID ="model" runat ="server"  Text='<%#Eval("model") %>'/></td>
            <td><asp:TextBox ID ="size" runat ="server"  Text='<%#Eval("size") %>'/></td>
            <td><asp:TextBox ID ="spec" runat ="server"   Text='<%#Eval("spec") %>'/></td>
            <td><asp:TextBox ID ="pur_qty" runat ="server" Text='<%#Eval("pur_qty") %>'/></td>
            <td><asp:TextBox ID ="cin_qty" runat ="server"   Text='<%#Eval("cin_qty") %>'/></td>
                <td><asp:Button ID ="btnDelete" Text ="删除" runat ="server" OnClick="ButtonDelete_Click" UseSubmitBehavior="false"/></td>
                </tr>
        </ItemTemplate>
         
    </asp:Repeater>
     
            </table>
        <asp:Button ID="Button3" runat="server" Text="添加产品" OnClick="Button3_Click" />
后台代码:
protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DataTable fData = null;
            fData = new DataTable("TEST");
            fData.Columns.Add("编号");
            fData.Columns.Add("品名");
            fData.Columns.Add("型号");
            fData.Columns.Add("尺寸");
            fData.Columns.Add("规格");
            fData.Columns.Add("采购数量");
            fData.Columns.Add("入库数量");

            for (int i = 0; i < 1; i++)
            {
                fData.Rows.Add(new object[] { string.Empty, string.Empty });
            }
            rpt.DataSource = fData;
             rpt.DataBind();
        }
    }
    protected void rpt_ItemCommand(object source, RepeaterCommandEventArgs e)
    {
        Console.Write(e.Item);
    }
    private int fButtonIndex = -1;
    protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        DataRowView dr = e.Item.DataItem as DataRowView;
        if (dr == null)
        {
            return;
        }

        fButtonIndex++;
        ((TextBox)e.Item.FindControl("sku")).Text = dr[0].ToString();
        ((TextBox)e.Item.FindControl("name")).Text = dr[1].ToString();
        ((TextBox)e.Item.FindControl("model")).Text = dr[2].ToString();
        ((TextBox)e.Item.FindControl("size")).Text = dr[3].ToString();
        ((TextBox)e.Item.FindControl("spec")).Text = dr[4].ToString();
        ((TextBox)e.Item.FindControl("pur_qty")).Text = dr[5].ToString();
        ((TextBox)e.Item.FindControl("cin_qty")).Text = dr[6].ToString();
        var deleteButton = e.Item.FindControl("btnDelete") as Button;
        deleteButton.Attributes.Add("index", fButtonIndex.ToString());
        var sku_changed = e.Item.FindControl("sku") as TextBox;
        sku_changed.Attributes.Add("index", fButtonIndex.ToString());
    }
    protected void ButtonDelete_Click(object sender, EventArgs e)
    {
        DataTable fData = null;
        fData = new DataTable("TEST");
        fData.Columns.Add("编号");
        fData.Columns.Add("品名");
        fData.Columns.Add("型号");
        fData.Columns.Add("尺寸");
        fData.Columns.Add("规格");
        fData.Columns.Add("采购数量");
        fData.Columns.Add("入库数量");
        var toDeleteRowIndex = int.Parse(((Button)sender).Attributes["index"]);

        foreach (RepeaterItem ri in rpt.Items)
        {
            DataRow dr = fData.NewRow();
            dr[0] = ((TextBox)ri.FindControl("sku")).Text;
            dr[1] = ((TextBox)ri.FindControl("name")).Text;
            dr[2] = ((TextBox)ri.FindControl("model")).Text;
            dr[3] = ((TextBox)ri.FindControl("size")).Text;
            dr[4] = ((TextBox)ri.FindControl("spec")).Text;
            dr[5] = ((TextBox)ri.FindControl("pur_qty")).Text;
            dr[6] = ((TextBox)ri.FindControl("cin_qty")).Text;
            fData.Rows.Add(dr);
        }

        fData.Rows.RemoveAt(toDeleteRowIndex);

        rpt.DataSource = fData;
        rpt.DataBind();
    }
    protected void Button3_Click(object sender, EventArgs e)
    {
        DataTable fData = GetRepeaterDataTable();

        DataRow drNew = fData.NewRow();
        drNew[0] = "";
        drNew[1] = "";
        drNew[2] = "";
        drNew[3] = "";
        drNew[4] = "";
        drNew[5] = "";
        drNew[6] = "";
        fData.Rows.Add(drNew);
        rpt.DataSource = fData;
        rpt.DataBind();
    }
    private DataTable GetRepeaterDataTable()
    {
        DataTable fData = null;
        fData = new DataTable("TEST");
        fData.Columns.Add("编号");
        fData.Columns.Add("品名");
        fData.Columns.Add("型号");
        fData.Columns.Add("尺寸");
        fData.Columns.Add("规格");
        fData.Columns.Add("采购数量");
        fData.Columns.Add("入库数量");
        foreach (RepeaterItem ri in rpt.Items)
        {
            DataRow dr = fData.NewRow();
            dr[0] = ((TextBox)ri.FindControl("sku")).Text;
            dr[1] = ((TextBox)ri.FindControl("name")).Text;
            dr[2] = ((TextBox)ri.FindControl("model")).Text;
            dr[3] = ((TextBox)ri.FindControl("size")).Text;
            dr[4] = ((TextBox)ri.FindControl("spec")).Text;
            dr[5] = ((TextBox)ri.FindControl("pur_qty")).Text;
            dr[6] = ((TextBox)ri.FindControl("cin_qty")).Text;
            fData.Rows.Add(dr);
        }
        return fData;
    }
     protected void TextBox2_TextChanged(object sender, EventArgs e)
    {
        string id = TextBox2.Text.Trim();

        SqlConnection myCon = null;
        SqlCommand myCom = null;
        SqlDataAdapter myDa = null;
        DataSet myDs = null;

        try
        {
            string myConStr = System.Configuration.ConfigurationSettings.AppSettings["db_link"]; ;
            myCon = new SqlConnection(myConStr);
            myCon.Open();

            myCom = new SqlCommand();
            myCom.Connection = myCon;

            string strSelect = "select sku,qty from PUR_detail where id='{0}'";
            string sql = string.Format(strSelect, id);

            myCom.CommandType = CommandType.Text;
            myCom.CommandText = sql;


            myDa = new SqlDataAdapter();
            myDa.SelectCommand = myCom;
            myDs = new DataSet();
            myDa.Fill(myDs, "DS_PUR_detail");
         
            this.rpt.DataSource = myDs.Tables["DS_PUR_detail"];  //myDs.Tables[0].DefaultView;
            
            this.rpt.DataBind();
        }
        catch (Exception oe)
        {

        }
        finally
        {
            if (myCon != null)
            {
                myCon.Close();
            }
        }//try 结束  

就是textbox2_textchanged()事件
回复 使用道具 举报
已完成,改了SQL语句,把每一个TEXTBOX都填上值,就可以了,谢谢
回复 使用道具 举报
chenxiaohuancxh 发表于 2015-11-10 14:28
已完成,改了SQL语句,把每一个TEXTBOX都填上值,就可以了,谢谢

恩。好了就行,刚才你一直没回复,我出去了趟,才回来。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马