现在也到一个问题 不算大 但烦了我半天建了一个datagrid,其中一个模板列中 列尾为一个textbox,其余部分绑定数据源。
希望的效果是绑定后,数据正常显示外,这个textbox里面可以自动出现一个任意要求的string可惜我只知道怎么从里面取,但往里头写,可真没招了,
大家救我! 先谢谢啦

解决方案 »

  1.   

    <edititemtemplate>
    <asp:textbox id="txtAicai" text='<%#container.dataitem("aicai")%>' runnat="server" />
    __________________________________________________
    dim txtaicai as textbox
    txtaicai=e.item.findcontrol("txtaicai")
      

  2.   

    呵呵 答案來了。
    取第i列中的文本框的值,其中設計模板時textbox的id為 TextBox1
    TextBox tb;
    tb= ((TextBox)this.DataGrid1.Items[i].FindControl("TextBox1"));
    tx.Text 中就是你想要的。
      

  3.   

    to:ebbtiger(爱财) ,你说的好像是在触发函数中找到那个textbox,但是我希望不是在触发,而是在Datagrid2绑定数据源后立刻对这个TextBox赋值
    to:yanlong(炎龙)
    我用力你说的方法,结果如下:
    “索引超出范围。必须为非负值并小于集合大小。参数名: index ”
    后来debug发现this.Datagrid2.Items.Count为0,所以…………可能我没说清楚,我的Datagrid2是一排模板列,各列的最后一格是textbox或dropdownlist,但其余部分都是绑定到数据源上。而查询数据库的结果可能是为空,但还是希望无论查询结果是否为空,都可以在指定的那个列的最后一行的TextBox里面写一些东西,就是在Datagrid2的绑定执行以后,在代码里赋值给这个TextBox,而赋值内容可以是任意的(其实这个内容是要求和Datagrid2之外的某个DropDownList的被选择项的文本相同)不知道我有没有说清楚。
      

  4.   

    <asp:TemplateColumn HeaderText="姓名">
    <ItemTemplate>
    <asp:TextBox ID="txtxm" Runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"xm")%>' Visible="True" Width="80px">
    </asp:TextBox>
    </ItemTemplate>
    </asp:TemplateColumn>把textbox直接加在<ItemTemplate>中
      

  5.   

    恐怕不行,datagrid的就是要这个textbox在FooterTemplate中,而在这个FooterTemplate中,只是要它一直显示一个值(只有这一列的FooterTemplate要这么做,其他列的FooterTemplate则为TextBox,或DropDownList,用力取得用户输入数据),所以就算这列的FooterTemplate是label而不是textbox也行.
    页面如下,举两个列做例子:
    <asp:TemplateColumn HeaderText="MeetingNo">
    <ItemTemplate>
    <%# DataBinder.Eval(Container, "DataItem.MeetingNo") %>
    </ItemTemplate>
    <FooterTemplate>
    <asp:TextBox id="FTextbox23" runat="server" Width="50px"></asp:TextBox>
    </FooterTemplate>
    <EditItemTemplate>
    <asp:TextBox id="Textbox23" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.MeetingNo") %>'></asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="Bug Or Not(Y/N)">
    <ItemTemplate>
    <%# DataBinder.Eval(Container, "DataItem.BugOrNot") %>
    </ItemTemplate>
    <FooterTemplate>
    <asp:DropDownList id="DropDownListBugYorN" runat="server" Width="44px">
    <asp:ListItem Value="Y">Y</asp:ListItem>
    <asp:ListItem Value="N">N</asp:ListItem>
    </asp:DropDownList>
    </FooterTemplate>
    <EditItemTemplate>
    <asp:TextBox id=Textbox24 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.BugOrNot") %>'>
    </asp:TextBox>
    </EditItemTemplate>
    </asp:TemplateColumn>
    而设计这个DataGrid的希望的效果是这样:假设我上面指的是在“MeetingNO”这一列,旁边是“Bug Or Not ”列。前期是:网页上某个单独的DropDownList中,选中一个Item值,它指示一个MeetingNO值,它和另外某个值作为key搜索数据库,结果绑定到上面讲的那个DataGrid中,其中字段MeetingNo在第x列。每列都是模板列,每列最后的FooterTemplate中是TextBox或DropDownList,它们用来读取用户的输入的一组字段,再insert到数据库中。显然MeetingNo是不用读入的(因为绑定的数据源就是用它做关键字select出来的),所以希望这第x列的FooterTemplate的TextBox(FTextbox23)中,希望直接显示MeetingNo。至于ItemTemplate,如果把textbox放在里面,则会干扰显示数据库的select结果。简单地说,就是用字段a的某个具体值搜索数据库,得出包括a字段的一组字段,绑定到一个每列都有FooterTemplate的DataGrid中,而各个FooterTemplate中,要求a字段对应的FooterTemplate中的TextBox显示刚才搜索数据库时用的a字段的值,而不管这搜索结果是否为空(显然为空时DataGrid就只能显示两行了,HeaderText和FooterTemplate)
    --------------------
    我试了很多方法都都不能达到目的,但理论上在DataGrid绑定成功后,应该可以对某个列的FooterTemplate中的内容赋值才对。  请各位帮忙给个方法,我实在头痛啊,只因为boss提出这个要求,看似简单的要求,总不好意思说“无法实现”吧目前所有功能都正常(搜索、编辑、删除,添加数据库中的记录),只差这一个小小的显示了 :(