注册 登录
编程论坛 ASP.NET技术论坛

GridView中的数据回传

筱晓绾 发布于 2010-09-01 17:35, 1078 次点击

        // 实现物料单行梆定的处理事件
        protected void gvMaterial_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if (((YCC.Models.Material)e.Row.DataItem).MaterialID == null || ((YCC.Models.Material)e.Row.DataItem).MaterialID == "")
                {
                    e.Row.Cells[0].Text = "";
                    e.Row.Cells[1].Text = "";
                    e.Row.Cells[2].Text = "";
                    e.Row.Cells[3].Text = "";
                    e.Row.Cells[4].Text = "";
                    e.Row.Cells[5].Enabled = false;
                }
                else
                {
                    YCC.Models.Material item = (YCC.Models.Material)e.Row.DataItem;
                    
                    e.Row.Cells[4].Text = bllMaterial.GetMaterialType(item.MTypeID).MTypeName;
                }
            }
        }
只有本站会员才能查看附件,请 登录
图一
只有本站会员才能查看附件,请 登录
图二
图一是预先得到的结果,图二是点击“选择”项的结果,对于类别名称那一列的显示方法在上面用橘色处调用。
为什么我点击“选择”后,类别名称会丢失?
请高手指教。。。

7 回复
#2
qingshuiliu2010-09-01 19:51
这个和gridview的其他事件有关
你给的信息不全,不好判断
#3
NewDeveloper2010-09-01 19:51
你的“选择”项里面触发了事件还是单单的SelectCommand?
#4
筱晓绾2010-09-02 09:05
就是单单的SelectCommand!
是不是由于有分页的缘故啊?

[ 本帖最后由 筱晓绾 于 2010-9-2 09:08 编辑 ]
#5
bygg2010-09-02 09:43
当你'选择'的时候,再一次触发了gvMaterial_RowDataBound事件.
你跟踪一下,看一看那两个if
#6
筱晓绾2010-09-02 10:46
“选择”是GridView中自带的选择按钮
 <asp:GridView ID="gvMaterial" runat="server" Width="100%" SkinID="gv"
      AutoGenerateColumns="False" onrowdatabound="gvMaterial_RowDataBound"
      style="margin-bottom: 0px; margin-right: 0px;" >
         <Columns>
             <asp:BoundField DataField="MaterialID" HeaderText="物料编码"><HeaderStyle Width="10%"/>
                 <ItemStyle Width="10%" HorizontalAlign="Center" /></asp:BoundField>
             <asp:BoundField DataField="MaterialName" HeaderText="物料名称"><HeaderStyle Width="25%" />
                 <ItemStyle Width="25%" HorizontalAlign="Left" /></asp:BoundField>
             <asp:BoundField DataField="Spec" HeaderText="型号规格"><HeaderStyle Width="30%" />
                 <ItemStyle Width="30%" HorizontalAlign="Left" /></asp:BoundField>
             <asp:BoundField DataField="MaterialSymbol" HeaderText="助记符"><HeaderStyle Width="10%" />
                 <ItemStyle Width="10%" HorizontalAlign="Left" /></asp:BoundField>
                      <asp:TemplateField HeaderText="类别名称">
                          <EditItemTemplate>
                               <asp:TextBox ID="txtMTypeName" runat="server" Text='<%# Eval("MTypeID") %>'></asp:TextBox>
                          </EditItemTemplate>
                          <ItemTemplate>
                               <asp:Label ID="lblMTypeName" runat="server" Text='<%# Eval("MTypeID") %>'></asp:Label>
                          </ItemTemplate>
                          <HeaderStyle Width="15%" />
                          <ItemStyle Width="15%" HorizontalAlign="Center" />
                     </asp:TemplateField>
                     <asp:CommandField ShowSelectButton="True" ><HeaderStyle Width="10%" />
                          <ItemStyle Width="10%" HorizontalAlign="Center" />
                     </asp:CommandField>

                </Columns>
       </asp:GridView>
我怎么去触发那个事件呢?不好意思,我脑袋不是很会转!
#7
bygg2010-09-02 11:35
在这里设个断点,跟踪一下。
 if (e.Row.RowType == DataControlRowType.DataRow)
#8
筱晓绾2010-09-02 13:29
选择的时候,没有得到MTypeID的值,所以就没有那个类别名称。
╮(╯▽╰)╭
1