单击编辑时出现编辑选项错误的数据网格

时间:2011-10-04 09:07:44

标签: asp.net datagrid

我得到以下“数据绑定方法,如Eval(),XPath()和Bind()只能在数据绑定控件的上下文中使用。”错误。我怎样才能避免这个错误?

这是我从网格视图中编辑数据的代码:

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">


<asp:Panel ID="Panel1" runat="server" ScrollBars="Auto" Width="950px">
<asp:Label ID="lblMessage" runat="Server" ForeColor="Red"></asp:Label>

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 

    CellPadding="2"

  DataKeyNames="DOC_id" ForeColor="Black" OnRowCancelingEdit="GridView1_RowCancelingEdit"

 OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" 
        OnRowUpdating="GridView1_RowUpdating" 
        onrowcommand="GridView1_AddRow" BackColor="LightGoldenrodYellow" 
        BorderColor="Tan" BorderWidth="1px" Height="392px" ShowFooter="True">

   <FooterStyle BackColor="Tan" />
            <AlternatingRowStyle BackColor="pink" />
    <Columns>
    <asp:templatefield showheader="False">  
            <edititemtemplate>  
                <asp:linkbutton causesvalidation="True" commandname="Update"  
     id="LinkButton1" runat="server" text="Update"></asp:linkbutton>  
                 <asp:linkbutton causesvalidation="False" commandname="Cancel" 
    id="LinkButton2" runat="server" text="Cancel"></asp:linkbutton> 

            </edititemtemplate>  
            <footertemplate>  
                <asp:linkbutton commandname="AddNew" id="AddNew" runat="server">Add 
  New</asp:linkbutton>  
            </footertemplate>  
            <itemtemplate>  
                <asp:linkbutton causesvalidation="False" commandname="Edit" id="LinkButton1"
   runat="server" text="Edit"></asp:linkbutton>  
            </itemtemplate>  
        </asp:templatefield>  
        <asp:TemplateField HeaderText="Delete?">
                    <ItemTemplate>
                        <span onclick="return confirm('Are you sure to Delete the 
   record?')">
                        <asp:LinkButton ID="lnkB" runat="Server" Text="Delete" 
   CommandName="Delete"></asp:LinkButton>
                        </span>
                        </ItemTemplate>
                        </asp:TemplateField>
        <asp:TemplateField HeaderText="DOC_id">
            <EditItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Eval("DOC_id") %>'>
  </asp:Label>
            </EditItemTemplate>
            <FooterTemplate>
            <asp:TextBox ID="NewTextBox22" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="NewRequiredFieldValidator22" runat="server" 
                    ErrorMessage="*" ControlToValidate="NewTextBox22">
  </asp:RequiredFieldValidator>

            </FooterTemplate>
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Bind("DOC_id") %>'>
 </asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Dr_Type">
            <EditItemTemplate>
                <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("Dr_Type") %>'>
 </asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
                    ErrorMessage="*" ControlToValidate="TextBox1">  
  </asp:RequiredFieldValidator>
            </EditItemTemplate>
            <FooterTemplate>
            <asp:TextBox ID="NewTextBox1" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="NewRequiredFieldValidator1" runat="server" 
                    ErrorMessage="*" ControlToValidate="NewTextBox1">    
   </asp:RequiredFieldValidator>
            </FooterTemplate>
            <ItemTemplate>
                <asp:Label ID="Label2" runat="server" Text='<%# Bind("Dr_Type") %>'>
   </asp:Label>

            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Dr_Title">
            <EditItemTemplate>
            <asp:DropDownList ID="TextBox2" runat="server" selectedvalue='<%#      
 Bind("Dr_Title") %>'>
                <asp:ListItem Selected="True"></asp:ListItem>
                <asp:ListItem>Mr.</asp:ListItem>
                <asp:ListItem>Mrs.</asp:ListItem>
                <asp:ListItem>Ms.</asp:ListItem>
                <asp:ListItem>Fr.</asp:ListItem>
                <asp:ListItem>Sr.</asp:ListItem>
                <asp:ListItem>Rev.</asp:ListItem>
                <asp:ListItem>Dr.</asp:ListItem>
            </asp:DropDownList>

                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
                    ErrorMessage="*" ControlToValidate="TextBox2">
    </asp:RequiredFieldValidator>
            </EditItemTemplate>
            <FooterTemplate>
            <asp:DropDownList ID="NewTextBox2" runat="server" >
                <asp:ListItem Selected="True"></asp:ListItem>
                <asp:ListItem>Mr.</asp:ListItem>
                <asp:ListItem>Mrs.</asp:ListItem>
                <asp:ListItem>Ms.</asp:ListItem>
                <asp:ListItem>Fr.</asp:ListItem>
                <asp:ListItem>Sr.</asp:ListItem>
                <asp:ListItem>Rev.</asp:ListItem>
                <asp:ListItem>Dr.</asp:ListItem>
            </asp:DropDownList>
            <asp:RequiredFieldValidator ID="NewRequiredFieldValidator2" runat="server" 
                    ErrorMessage="*" ControlToValidate="NewTextBox2">
       </asp:RequiredFieldValidator>
            </FooterTemplate>
            <ItemTemplate>
                <asp:Label ID="Label3" runat="server" Text='<%# Bind("Dr_Title") %>'>
  </asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Dr_FirstName">
            <EditItemTemplate>
                <asp:TextBox ID="TextBox3" runat="server" Text='<%# Bind("Dr_FirstName") 
     %>'></asp:TextBox>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" 
                    ErrorMessage="*" ControlToValidate="TextBox3">
     </asp:RequiredFieldValidator>
            </EditItemTemplate>
            <FooterTemplate>
            <asp:TextBox ID="NewTextBox3" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="NewRequiredFieldValidator3" runat="server" 
                    ErrorMessage="*" ControlToValidate="NewTextBox3">
      </asp:RequiredFieldValidator>
            </FooterTemplate>
            <ItemTemplate>
                <asp:Label ID="Label4" runat="server" Text='<%# Bind("Dr_FirstName") %>'>
  </asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Dr_MiddleName">
            <EditItemTemplate>
                <asp:TextBox ID="TextBox4" runat="server" Text='<%# Bind("Dr_MiddleName") 
    %>'></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator4" runat="server" 
                    ErrorMessage="*" ControlToValidate="TextBox4">
   </asp:RequiredFieldValidator>
            </EditItemTemplate>
            <FooterTemplate>
            <asp:TextBox ID="NewTextBox4" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="NewRequiredFieldValidator4" runat="server" 
                    ErrorMessage="*" ControlToValidate="NewTextBox4">
  </asp:RequiredFieldValidator>
            </FooterTemplate>
            <ItemTemplate>
                <asp:Label ID="Label5" runat="server" Text='<%# Bind("Dr_MiddleName") %>'>
  </asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Dr_LastName">
            <EditItemTemplate>
                <asp:TextBox ID="TextBox5" runat="server" Text='<%# Bind("Dr_LastName") %>'>
     </asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server" 
                    ErrorMessage="*" ControlToValidate="TextBox5">
   </asp:RequiredFieldValidator>

            </EditItemTemplate>
            <FooterTemplate>
            <asp:TextBox ID="NewTextBox5" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="NewRequiredFieldValidator5" runat="server" 
                    ErrorMessage="*" ControlToValidate="NewTextBox5">
  </asp:RequiredFieldValidator>

            </FooterTemplate>
            <ItemTemplate>
                <asp:Label ID="Label6" runat="server" Text='<%# Bind("Dr_LastName") %>'>
  </asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Dr_Suffix">
            <EditItemTemplate>
            <asp:DropDownList ID="TextBox6" runat="server" selectedvalue='<%# 
      Bind("Dr_Suffix") %>'>
                <asp:ListItem Selected="True"></asp:ListItem>
                <asp:ListItem>Sr</asp:ListItem>
                <asp:ListItem>Jr</asp:ListItem>
                <asp:ListItem>III</asp:ListItem>
                <asp:ListItem>IV</asp:ListItem>
                <asp:ListItem>DMD</asp:ListItem>
                <asp:ListItem>DO</asp:ListItem>
                <asp:ListItem>DDS</asp:ListItem>
                <asp:ListItem>MD</asp:ListItem>
                <asp:ListItem>PHD</asp:ListItem>
                <asp:ListItem>DVM</asp:ListItem>
                <asp:ListItem>Esq</asp:ListItem>
                <asp:ListItem>Other</asp:ListItem>
            </asp:DropDownList>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator6" runat="server" 

                    ErrorMessage="*" ControlToValidate="TextBox6">
     </asp:RequiredFieldValidator>
            </EditItemTemplate>
            <FooterTemplate>
            <asp:DropDownList ID="NewTextBox6" runat="server">
                <asp:ListItem Selected="True"></asp:ListItem>
                <asp:ListItem>Sr</asp:ListItem>
                <asp:ListItem>Jr</asp:ListItem>
                <asp:ListItem>III</asp:ListItem>
                <asp:ListItem>IV</asp:ListItem>
                <asp:ListItem>DMD</asp:ListItem>
                <asp:ListItem>DO</asp:ListItem>
                <asp:ListItem>DDS</asp:ListItem>
                <asp:ListItem>MD</asp:ListItem>
                <asp:ListItem>PHD</asp:ListItem>
                <asp:ListItem>DVM</asp:ListItem>
                <asp:ListItem>Esq</asp:ListItem>
                <asp:ListItem>Other</asp:ListItem>
            </asp:DropDownList>
             <asp:RequiredFieldValidator ID="NewRequiredFieldValidator6" runat="server" 
                    ErrorMessage="*" ControlToValidate="NewTextBox6">
       </asp:RequiredFieldValidator>
            </FooterTemplate>
            <ItemTemplate>
                <asp:Label ID="Label7" runat="server" Text='<%# Bind("Dr_Suffix") %>'>
   </asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Dr_Degree">
            <EditItemTemplate>
                <asp:TextBox ID="TextBox7" runat="server" Text='<%# Bind("Dr_Degree") %>'>
    </asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server" 
                    ErrorMessage="*" ControlToValidate="TextBox7">
       </asp:RequiredFieldValidator>
            </EditItemTemplate>
            <FooterTemplate>
            <asp:TextBox ID="NewTextBox7" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="NewRequiredFieldValidator7" runat="server" 
                    ErrorMessage="*" ControlToValidate="NewTextBox7">
       </asp:RequiredFieldValidator>
            </FooterTemplate>
            <ItemTemplate>
                <asp:Label ID="Label8" runat="server" Text='<%# Bind("Dr_Degree") %>'>
      </asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Dr_PreferredUsername">
            <EditItemTemplate>
                <asp:TextBox ID="TextBox8" runat="server" Text='<%# 
      Bind("Dr_PreferredUsername") %>'></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator8" runat="server" 

                    ErrorMessage="*" ControlToValidate="TextBox8">
    </asp:RequiredFieldValidator>

            </EditItemTemplate>
            <FooterTemplate>
            <asp:TextBox ID="NewTextBox8" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="NewRequiredFieldValidator8" runat="server" 
                    ErrorMessage="*" ControlToValidate="NewTextBox8">
     </asp:RequiredFieldValidator>

            </FooterTemplate>
            <ItemTemplate>
                <asp:Label ID="Label9" runat="server" Text='<%# Bind("Dr_PreferredUsername")
      %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Dr_ContactNumber">
            <EditItemTemplate>
                <asp:TextBox ID="TextBox9" runat="server" Text='<%# Bind("Dr_ContactNumber")
     %>'></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator9" runat="server" 
                    ErrorMessage="*" ControlToValidate="TextBox9">
       </asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator ID="RegularExpressionValidator3"
     runat="server" 
            ControlToValidate="TextBox9" 
            ErrorMessage="Invalid Contact Number....!!" ForeColor="Red" 
            ValidationExpression="^[9,8,7][0-9]{9}$"></asp:RegularExpressionValidator>
            </EditItemTemplate>
            <FooterTemplate>
            <asp:TextBox ID="NewTextBox9" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="NewRequiredFieldValidator9" runat="server" 
                    ErrorMessage="*" ControlToValidate="NewTextBox9">
        </asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator ID="RegularExpressionValidator4" 
       runat="server" 
            ControlToValidate="NewTextBox9" 
            ErrorMessage="Invalid Contact Number....!!" ForeColor="Red" 
            ValidationExpression="^[9,8,7][0-9]{9}$"></asp:RegularExpressionValidator>
            </FooterTemplate>
            <ItemTemplate>
                <asp:Label ID="Label10" runat="server" Text='<%# Bind("Dr_ContactNumber") 
       %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Dr_FaxNumber">
            <EditItemTemplate>
                <asp:TextBox ID="TextBox10" runat="server" Text='<%# Bind("Dr_FaxNumber")
          %>'></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator10" runat="server" 
                    ErrorMessage="*" ControlToValidate="TextBox10">
          </asp:RequiredFieldValidator>
            </EditItemTemplate>
            <FooterTemplate>
            <asp:TextBox ID="NewTextBox10" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="NewRequiredFieldValidator10" runat="server" 
                    ErrorMessage="*" ControlToValidate="NewTextBox10">
        </asp:RequiredFieldValidator>
            </FooterTemplate>
            <ItemTemplate>
                <asp:Label ID="Label11" runat="server" Text='<%# Bind("Dr_FaxNumber") %>'>
      </asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Dr_EmailAddress">
            <EditItemTemplate>
                <asp:TextBox ID="TextBox11" runat="server" Text='<%# Bind("Dr_EmailAddress")
             %>'></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator11" runat="server" 
                    ErrorMessage="*" ControlToValidate="TextBox11">
   </asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator ID="RegularExpressionValidator5" 
       runat="server" 
                ControlToValidate="TextBox11" ErrorMessage="Invalid Email ID....!!" 
       ForeColor="Red" 
                ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">
          </asp:RegularExpressionValidator>
            </EditItemTemplate>
            <FooterTemplate>
            <asp:TextBox ID="NewTextBox11" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="NewRequiredFieldValidator11" runat="server" 
                    ErrorMessage="*" ControlToValidate="NewTextBox11">
        </asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator ID="RegularExpressionValidator6" 
      runat="server" 
                ControlToValidate="NewTextBox11" ErrorMessage="Invalid Email ID....!!"
        ForeColor="Red" 
                ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">
        </asp:RegularExpressionValidator>
            </FooterTemplate>
            <ItemTemplate>
                <asp:Label ID="Label12" runat="server" Text='<%# Bind("Dr_EmailAddress") 
        %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Dr_SpecialtyArea">
            <EditItemTemplate>
               <asp:DropDownList ID="TextBox12" runat="server" selectedvalue='<%#  
       Bind("Dr_SpecialtyArea") %>'
                DataSourceID="SqlDataSource3" DataTextField="Speciality" 
                DataValueField="Speciality">
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource3" runat="server" 
                ConnectionString="<%$ ConnectionStrings:DBCS %>" 
                SelectCommand="SELECT [Speciality] FROM [Doc_Speciality]">
            </asp:SqlDataSource>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator12" runat="server" 
                    ErrorMessage="*" ControlToValidate="TextBox12">
        </asp:RequiredFieldValidator>
            </EditItemTemplate>
            <FooterTemplate>
               <asp:DropDownList ID="NewTextBox12" runat="server" 
                DataSourceID="SqlDataSource3" DataTextField="Speciality" 
                DataValueField="Speciality">
            </asp:DropDownList>
            <asp:SqlDataSource ID="SqlDataSource3" runat="server" 
                ConnectionString="<%$ ConnectionStrings:DBCS %>" 
                SelectCommand="SELECT [Speciality] FROM [Doc_Speciality]">
            </asp:SqlDataSource>
            <asp:RequiredFieldValidator ID="NewRequiredFieldValidator12" runat="server" 
                    ErrorMessage="*" ControlToValidate="NewTextBox12">
          </asp:RequiredFieldValidator>
            </FooterTemplate>
            <ItemTemplate>
                <asp:Label ID="Label13" runat="server" Text='<%# Bind("Dr_SpecialtyArea")
       %>'></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

 <SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" />

<PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" />

 <HeaderStyle BackColor="Tan" Font-Bold="True" />

            <SortedAscendingCellStyle BackColor="#FAFAE7" />
            <SortedAscendingHeaderStyle BackColor="#DAC09E" />
            <SortedDescendingCellStyle BackColor="#E1DB9C" />
            <SortedDescendingHeaderStyle BackColor="#C2A47B" />
</asp:GridView>

</asp:Panel>
<asp:LinkButton ID="AddNew"  runat="server" Text="AddNew" 
    onclientclick="imgbtn_Click" onclick="AddNew_Click"></asp:LinkButton>
</asp:Content>`

1 个答案:

答案 0 :(得分:1)

试试这个解决方案:

http://w3ka.blogspot.com/2007/09/dropdownlist-in-gridview.html

您必须为使用SqlDataSource的DropDownLists创建一个DataBound事件,并在那里设置SelectedValue。

相关问题