首页 新闻 会员 周边

如何取到ListView中的值?

0
悬赏园豆:15 [已解决问题] 解决于 2010-09-15 17:46

我在Listview的 OnItemDataBound中给TextBox赋值了,当我单击了确认按钮的时候如何在OnItemCommand事件中取到TextBox值

 <asp:ListView ID="lvMedics" runat="server" OnItemCommand="lvMedics_ItemCommand" OnItemDataBound="lvMedics_ItemDataBound">
        <LayoutTemplate>
            <asp:PlaceHolder ID="groupPlaceHolder" runat="server"></asp:PlaceHolder>
        </LayoutTemplate>
        <GroupTemplate>
            <asp:PlaceHolder ID="itemPlaceHolder" runat="server"></asp:PlaceHolder>
        </GroupTemplate>
        <ItemTemplate>
            <tr>
                <td>
                    <%# Eval("MedicineName")%>
                </td>
                <td>
                    <asp:TextBox ID="txtBuyNum" runat="server" Width="60px"></asp:TextBox><span style="color: Red;
                        font-size: 12px;">(/件)</span>
                </td>
                <td>
                    <asp:Button runat="server" ID="btnBuy" Text="确认" CommandName="BuyFilter" CommandArgument='<%# Eval("Id") %>' />
                </td>
            </tr>
        </ItemTemplate>
    </asp:ListView>

问题补充: 下面是我写的lvMedics_ItemCommand事件!!!为什么txtNum的值总是为空呢????如何能取到txtNum的值啊???? protected void lvMedics_ItemCommand(object sender, ListViewCommandEventArgs e) { if (e.CommandName == "BuyFilter") { ListViewDataItem dataItem = (ListViewDataItem)e.Item; TextBox txtNum = (TextBox)dataItem.FindControl("txtBuyNum"); txtNum.Text="这个地方老是为空啊!!!怎么能取到我在页面上输入的值呢??"; } }
凭栏处的主页 凭栏处 | 初学一级 | 园豆:45
提问于:2010-09-10 19:40
< >
分享
最佳答案
0

你的txtNum是哪个控件了啊?貌似你的控件ID是txtBuyNum

yixin841210 | 小虾三级 |园豆:1138 | 2010-09-10 21:13
是我问题补充那写错了!!!应该是txtBuyNum!!不过我代码里写的的确是(TextBox)dataItem.FindControl("txtBuyNum")也还是取不到值啊?能告诉我这是什么原因或者方法 吗?感激不尽!!!
凭栏处 | 园豆:45 (初学一级) | 2010-09-11 08:45
@凭栏处: 恩,我猜你是在lvMedics_ItemDataBound里做了什么事情吧,如果你在lvMedics_ItemDataBound重设了txtBuyNum的值,那么在OnItemCommand里获得的就应该是空的,lvMedics_ItemDataBound的执行是在OnItemCommand之前的 不过我感觉当你点击确任的时候,服务器端重新绑定了一下控件,而重新绑定控件的话,默认txtBuyNum是没有值的,因为你上面在TextBox中没写<%#Eval("")%>
yixin841210 | 园豆:1138 (小虾三级) | 2010-09-11 12:03
我先在lvMedics_ItemDataBound事件中为txtBuyNum赋值,然后再想在OnItemCommand事件中取到用户修改后的值,可是只能取到lvMedics_ItemDataBound中赋的值,用户输入的去取不到啊?能告诉我这是为什么吗?
凭栏处 | 园豆:45 (初学一级) | 2010-09-11 16:28
@凭栏处:取不到,因为你在lvMedics_ItemDataBound中已经覆盖掉了用户的输入值,所以就取不到了,有个先后执行的问题!因为OnItemCommand在lvMedics_ItemDataBound之后执行的,而在OnItemCommand方法之前你已经重新给txtBuyNum设置值了,显然取得的就是你新设置的值 不过既然你已经选择了让用户填入信息,为什么还要在lvMedics_ItemDataBound事件中重新给txtBuyNum赋值呢
yixin841210 | 园豆:1138 (小虾三级) | 2010-09-11 18:13
ItemDataBound事件中的值是用户以前保存的!现在让他确认所以就先把数据库的赋值给txtBuyNum,如果他修改了那我就取最新修改的值,如果不修改那就取原先的值!这么做丝路上应该没有问题吧?能告诉我怎么做吗?
凭栏处 | 园豆:45 (初学一级) | 2010-09-13 07:21
其他回答(1)
1

关注一下

收获园豆:15
钢的锅 | 园豆:10 (初学一级) | 2010-09-10 23:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册