tsql - Empty Dictionary Error on Delete with SqlDataSource - ASP.net ListView -


i'm trying make simple listview optimistic concurrency. uses vs-automatically-generated delete, insert, update statements (except 1 change insert: see code). insert , edit work fine , commit database. when trying delete, error:

you have specified delete command compares values on sqldatasource 'mysourcehere', dictionary passed in values empty. pass in valid dictionary delete or change mode overwritechanges.

i've tried changing "compareallvalues" "overwritechanges" postpone concurrency work later, "breaks" update , delete commands, seem refresh listview old values. threads find resolved issue involved changing "overwritechanges" or people didn't have "datakeynames" declared. relevent markup below (i hope).

any thoughts?

<asp:sqldatasource id="manageuserssource" runat="server"      conflictdetection="compareallvalues"      connectionstring="<%$ connectionstrings:connectionstring %>"          deletecommand="delete [duser] [userid] = ? , (([username] = ?) or ([username] null , ? null)) , (([userpass] = ?) or ([userpass] null , ? null))"      insertcommand="insert [duser] ([username], [userpass]) values (?, ?)"      oldvaluesparameterformatstring="original_{0}"      providername="<%$ connectionstrings:connectionstring.providername %>"      selectcommand="select * [duser] order [userid] asc"      updatecommand="update [duser] set [username] = ?, [userpass] = ? [userid] = ? , (([username] = ?) or ([username] null , ? null)) , (([userpass] = ?) or ([userpass] null , ? null))">     <deleteparameters>         <asp:parameter name="original_userid" type="int16" />         <asp:parameter name="original_username" type="string" />         <asp:parameter name="original_username" type="string" />         <asp:parameter name="original_userpass" type="string" />         <asp:parameter name="original_userpass" type="string" />     </deleteparameters>     <insertparameters>     <%--this removed since [userid] automatically generated index.--%>         <%--<asp:parameter name="userid" type="int16" />--%>         <asp:parameter name="username" type="string" />         <asp:parameter name="userpass" type="string" />     </insertparameters>     <updateparameters>         <asp:parameter name="username" type="string" />         <asp:parameter name="userpass" type="string" />         <asp:parameter name="original_userid" type="int16" />         <asp:parameter name="original_username" type="string" />         <asp:parameter name="original_username" type="string" />         <asp:parameter name="original_userpass" type="string" />         <asp:parameter name="original_userpass" type="string" />     </updateparameters> </asp:sqldatasource> <asp:listview id="listview1" runat="server" datakeynames="userid"      datasourceid="manageuserssource" insertitemposition="lastitem">     <alternatingitemtemplate>         <tr style="background-color:#fff8dc;">             <td>                 <asp:button id="deletebutton" runat="server" commandname="delete"                      text="delete" />                 <asp:button id="editbutton" runat="server" commandname="edit" text="edit" />             </td>             <td>                 <asp:label id="useridlabel" runat="server" text='<%# eval("userid") %>' />             </td>             <td>                 <asp:label id="usernamelabel" runat="server" text='<%# eval("username") %>' />             </td>             <td>                 <asp:label id="userpasslabel" runat="server" text='<%# eval("userpass") %>' />             </td>         </tr>     </alternatingitemtemplate>     <edititemtemplate>         <tr style="background-color:#008a8c;color: #ffffff;">             <td>                 <asp:button id="updatebutton" runat="server" commandname="update"                      text="update" />                 <asp:button id="cancelbutton" runat="server" commandname="cancel"                      text="cancel" />             </td>             <td>                 <asp:label id="useridlabel1" runat="server" text='<%# eval("userid") %>' />             </td>             <td>                 <asp:textbox id="usernametextbox" runat="server"                      text='<%# bind("username") %>' />             </td>             <td>                 <asp:textbox id="userpasstextbox" runat="server"                      text='<%# bind("userpass") %>' />             </td>         </tr>     </edititemtemplate>     <emptydatatemplate>         <table runat="server"              style="background-color: #ffffff;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;">             <tr>                 <td>                     no data returned.</td>             </tr>         </table>     </emptydatatemplate>     <insertitemtemplate>         <tr style="">             <td>                 <asp:button id="insertbutton" runat="server" commandname="insert"                      text="insert" />                 <asp:button id="cancelbutton" runat="server" commandname="cancel"                      text="clear" />             </td>             <td>                 &nbsp;</td>             <td>                 <asp:textbox id="usernametextbox" runat="server"                      text='<%# bind("username") %>' />             </td>             <td>                 <asp:textbox id="userpasstextbox" runat="server"                      text='<%# bind("userpass") %>' />             </td>         </tr>     </insertitemtemplate>     <itemtemplate>         <tr style="background-color:#dcdcdc;color: #000000;">             <td>                 <asp:button id="deletebutton" runat="server" commandname="delete"                      text="delete" />                 <asp:button id="editbutton" runat="server" commandname="edit" text="edit" />             </td>             <td>                 <asp:label id="useridlabel" runat="server" text='<%# eval("userid") %>' />             </td>             <td>                 <asp:label id="usernamelabel" runat="server" text='<%# eval("username") %>' />             </td>             <td>                 <asp:label id="userpasslabel" runat="server" text='<%# eval("userpass") %>' />             </td>         </tr>     </itemtemplate>     <layouttemplate>         <table runat="server">             <tr runat="server">                 <td runat="server">                     <table id="itemplaceholdercontainer" runat="server" border="1"                          style="background-color: #ffffff;border-collapse: collapse;border-color: #999999;border-style:none;border-width:1px;font-family: verdana, arial, helvetica, sans-serif;">                         <tr runat="server" style="background-color:#dcdcdc;color: #000000;">                             <th runat="server">                             </th>                             <th runat="server">                                 userid</th>                             <th runat="server">                                 username</th>                             <th runat="server">                                 userpass</th>                         </tr>                         <tr id="itemplaceholder" runat="server">                         </tr>                     </table>                 </td>             </tr>             <tr runat="server">                 <td runat="server"                      style="text-align: center;background-color: #cccccc;font-family: verdana, arial, helvetica, sans-serif;color: #000000;">                     <asp:datapager id="datapager1" runat="server">                         <fields>                             <asp:nextpreviouspagerfield buttontype="button" showfirstpagebutton="true"                                  showlastpagebutton="true" />                         </fields>                     </asp:datapager>                 </td>             </tr>         </table>     </layouttemplate>     <selecteditemtemplate>         <tr style="background-color:#008a8c;font-weight: bold;color: #ffffff;">             <td>                 <asp:button id="deletebutton" runat="server" commandname="delete"                      text="delete" />                 <asp:button id="editbutton" runat="server" commandname="edit" text="edit" />             </td>             <td>                 <asp:label id="useridlabel" runat="server" text='<%# eval("userid") %>' />             </td>             <td>                 <asp:label id="usernamelabel" runat="server" text='<%# eval("username") %>' />             </td>             <td>                 <asp:label id="userpasslabel" runat="server" text='<%# eval("userpass") %>' />             </td>         </tr>     </selecteditemtemplate> </asp:listview> 

changing non-primary key fields use "bind" instead of "eval" in itemtemplate/alternatingitemtemplate (just edit template) apparently needed pass along old values.

this case of using automatically generated markup without understanding (i still don't, really.)


Comments

Popular posts from this blog

jquery - Invalid Assignment Left-Hand Side -

java - Play! framework 2.0: How to display multiple image? -

gmail - Is there any documentation for read-only access to the Google Contacts API? -